[
  {
    "path": ".idea/compiler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <annotationProcessing>\n      <profile name=\"Maven default annotation processors profile\" enabled=\"true\">\n        <sourceOutputDir name=\"target/generated-sources/annotations\" />\n        <sourceTestOutputDir name=\"target/generated-test-sources/test-annotations\" />\n        <outputRelativeToContentRoot value=\"true\" />\n        <module name=\"admin-web\" />\n        <module name=\"api\" />\n        <module name=\"builder\" />\n        <module name=\"common\" />\n        <module name=\"verifymaster\" />\n      </profile>\n      <profile name=\"Annotation profile for verify-master\" enabled=\"true\">\n        <sourceOutputDir name=\"target/generated-sources/annotations\" />\n        <sourceTestOutputDir name=\"target/generated-test-sources/test-annotations\" />\n        <outputRelativeToContentRoot value=\"true\" />\n        <processorPath useClasspath=\"false\">\n          <entry name=\"$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.2.0.Final/mapstruct-processor-1.2.0.Final.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/com/jolira/hickory/1.0.0/hickory-1.0.0.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.7.0/assertj-core-3.7.0.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/com/google/guava/guava/19.0/guava-19.0.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/com/puppycrawl/tools/checkstyle/7.2/checkstyle-7.2.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-container-default/1.6/plexus-container-default-1.6.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/org/springframework/spring-test/4.0.3.RELEASE/spring-test-4.0.3.RELEASE.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/org/springframework/spring-beans/4.0.3.RELEASE/spring-beans-4.0.3.RELEASE.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/org/springframework/spring-context/4.0.3.RELEASE/spring-context-4.0.3.RELEASE.jar\" />\n          <entry name=\"$MAVEN_REPOSITORY$/joda-time/joda-time/2.9/joda-time-2.9.jar\" />\n        </processorPath>\n        <module name=\"admin\" />\n      </profile>\n    </annotationProcessing>\n    <bytecodeTargetLevel>\n      <module name=\"admin\" target=\"1.8\" />\n      <module name=\"admin-web\" target=\"1.8\" />\n      <module name=\"api\" target=\"1.5\" />\n      <module name=\"builder\" target=\"1.8\" />\n      <module name=\"common\" target=\"1.5\" />\n      <module name=\"dal\" target=\"1.8\" />\n      <module name=\"discovery\" target=\"1.8\" />\n      <module name=\"verifymaster\" target=\"1.5\" />\n    </bytecodeTargetLevel>\n  </component>\n</project>"
  },
  {
    "path": ".idea/encodings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\">\n    <file url=\"file://$PROJECT_DIR$/admin\" charset=\"UTF-8\" />\n    <file url=\"file://$PROJECT_DIR$/admin-web\" charset=\"UTF-8\" />\n    <file url=\"file://$PROJECT_DIR$/api\" charset=\"UTF-8\" />\n    <file url=\"file://$PROJECT_DIR$/builder\" charset=\"UTF-8\" />\n    <file url=\"file://$PROJECT_DIR$/common\" charset=\"UTF-8\" />\n    <file url=\"file://$PROJECT_DIR$/dal\" charset=\"UTF-8\" />\n    <file url=\"file://$PROJECT_DIR$/discovery\" charset=\"UTF-8\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/inspectionProfiles/Project_Default.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <profile version=\"1.0\">\n    <option name=\"myName\" value=\"Project Default\" />\n    <inspection_tool class=\"JavaDoc\" enabled=\"true\" level=\"WARNING\" enabled_by_default=\"true\">\n      <option name=\"TOP_LEVEL_CLASS_OPTIONS\">\n        <value>\n          <option name=\"ACCESS_JAVADOC_REQUIRED_FOR\" value=\"none\" />\n          <option name=\"REQUIRED_TAGS\" value=\"\" />\n        </value>\n      </option>\n      <option name=\"INNER_CLASS_OPTIONS\">\n        <value>\n          <option name=\"ACCESS_JAVADOC_REQUIRED_FOR\" value=\"none\" />\n          <option name=\"REQUIRED_TAGS\" value=\"\" />\n        </value>\n      </option>\n      <option name=\"METHOD_OPTIONS\">\n        <value>\n          <option name=\"ACCESS_JAVADOC_REQUIRED_FOR\" value=\"none\" />\n          <option name=\"REQUIRED_TAGS\" value=\"@return@param@throws or @exception\" />\n        </value>\n      </option>\n      <option name=\"FIELD_OPTIONS\">\n        <value>\n          <option name=\"ACCESS_JAVADOC_REQUIRED_FOR\" value=\"none\" />\n          <option name=\"REQUIRED_TAGS\" value=\"\" />\n        </value>\n      </option>\n      <option name=\"IGNORE_DEPRECATED\" value=\"false\" />\n      <option name=\"IGNORE_JAVADOC_PERIOD\" value=\"true\" />\n      <option name=\"IGNORE_DUPLICATED_THROWS\" value=\"false\" />\n      <option name=\"IGNORE_POINT_TO_ITSELF\" value=\"false\" />\n      <option name=\"myAdditionalJavadocTags\" value=\"date\" />\n    </inspection_tool>\n  </profile>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__antlr_antlr_2_7_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: antlr:antlr:2.7.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: ch.qos.logback:logback-classic:1.2.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: ch.qos.logback:logback-core:1.2.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__cn_hutool_hutool_all_4_2_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: cn.hutool:hutool-all:4.2.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/4.2.1/hutool-all-4.2.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/4.2.1/hutool-all-4.2.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/4.2.1/hutool-all-4.2.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__cn_hutool_hutool_all_4_5_1.xml",
    "content": "<component name=\"libraryTable\">\r\n  <library name=\"Maven: cn.hutool:hutool-all:4.5.1\">\r\n    <CLASSES>\r\n      <root url=\"jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/4.5.1/hutool-all-4.5.1.jar!/\" />\r\n    </CLASSES>\r\n    <JAVADOC>\r\n      <root url=\"jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/4.5.1/hutool-all-4.5.1-javadoc.jar!/\" />\r\n    </JAVADOC>\r\n    <SOURCES>\r\n      <root url=\"jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/4.5.1/hutool-all-4.5.1-sources.jar!/\" />\r\n    </SOURCES>\r\n  </library>\r\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_alibaba_boot_dubbo_spring_boot_autoconfigure_0_2_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.alibaba.boot:dubbo-spring-boot-autoconfigure:0.2.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/boot/dubbo-spring-boot-autoconfigure/0.2.0/dubbo-spring-boot-autoconfigure-0.2.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/boot/dubbo-spring-boot-autoconfigure/0.2.0/dubbo-spring-boot-autoconfigure-0.2.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/boot/dubbo-spring-boot-autoconfigure/0.2.0/dubbo-spring-boot-autoconfigure-0.2.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_alibaba_boot_dubbo_spring_boot_starter_0_2_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.alibaba.boot:dubbo-spring-boot-starter:0.2.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/boot/dubbo-spring-boot-starter/0.2.0/dubbo-spring-boot-starter-0.2.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/boot/dubbo-spring-boot-starter/0.2.0/dubbo-spring-boot-starter-0.2.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/boot/dubbo-spring-boot-starter/0.2.0/dubbo-spring-boot-starter-0.2.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_alibaba_dubbo_2_6_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.alibaba:dubbo:2.6.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/dubbo/2.6.2/dubbo-2.6.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/dubbo/2.6.2/dubbo-2.6.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/dubbo/2.6.2/dubbo-2.6.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_alibaba_fastjson_1_2_52.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.alibaba:fastjson:1.2.52\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.52/fastjson-1.2.52.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.52/fastjson-1.2.52-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.52/fastjson-1.2.52-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_3_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus:3.0.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.0.6/mybatis-plus-3.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.0.6/mybatis-plus-3.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.0.6/mybatis-plus-3.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus-annotation:3.0.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.0.6/mybatis-plus-annotation-3.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.0.6/mybatis-plus-annotation-3.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.0.6/mybatis-plus-annotation-3.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus-boot-starter:3.0.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.0.6/mybatis-plus-boot-starter-3.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.0.6/mybatis-plus-boot-starter-3.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.0.6/mybatis-plus-boot-starter-3.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus-core:3.0.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.0.6/mybatis-plus-core-3.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.0.6/mybatis-plus-core-3.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.0.6/mybatis-plus-core-3.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus-extension:3.0.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.0.6/mybatis-plus-extension-3.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.0.6/mybatis-plus-extension-3.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.0.6/mybatis-plus-extension-3.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus-generator:3.0.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generator/3.0.6/mybatis-plus-generator-3.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generator/3.0.6/mybatis-plus-generator-3.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generator/3.0.6/mybatis-plus-generator-3.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_baomidou_mybatis_plus_support_2_1_9.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.baomidou:mybatis-plus-support:2.1.9\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.1.9/mybatis-plus-support-2.1.9.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.1.9/mybatis-plus-support-2.1.9-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.1.9/mybatis-plus-support-2.1.9-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_classmate_1_3_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml:classmate:1.3.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.1/classmate-1.3.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.1/classmate-1.3.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.1/classmate-1.3.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml:classmate:1.3.4\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml:classmate:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.4.0/classmate-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.4.0/classmate-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.4.0/classmate-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-core:2.9.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.7/jackson-core-2.9.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.7/jackson-core-2.9.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.7/jackson-core-2.9.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_6.xml",
    "content": "<component name=\"libraryTable\">\r\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-databind:2.9.6\">\r\n    <CLASSES>\r\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.6/jackson-databind-2.9.6.jar!/\" />\r\n    </CLASSES>\r\n    <JAVADOC>\r\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.6/jackson-databind-2.9.6-javadoc.jar!/\" />\r\n    </JAVADOC>\r\n    <SOURCES>\r\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.6/jackson-databind-2.9.6-sources.jar!/\" />\r\n    </SOURCES>\r\n  </library>\r\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-databind:2.9.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.7/jackson-databind-2.9.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.7/jackson-databind-2.9.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.7/jackson-databind-2.9.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.7/jackson-datatype-jdk8-2.9.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.7/jackson-datatype-jdk8-2.9.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.7/jackson-datatype-jdk8-2.9.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.7/jackson-datatype-jsr310-2.9.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.7/jackson-datatype-jsr310-2.9.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.7/jackson-datatype-jsr310-2.9.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.7/jackson-module-parameter-names-2.9.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.7/jackson-module-parameter-names-2.9.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.7/jackson-module-parameter-names-2.9.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.github.jsqlparser:jsqlparser:1.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.2/jsqlparser-1.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.2/jsqlparser-1.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.2/jsqlparser-1.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_google_guava_guava_16_0_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.google.guava:guava:16.0.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/google/guava/guava/16.0.1/guava-16.0.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/google/guava/guava/16.0.1/guava-16.0.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/google/guava/guava/16.0.1/guava-16.0.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.jayway.jsonpath:json-path:2.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_rabbitmq_amqp_client_5_4_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.rabbitmq:amqp-client:5.4.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/rabbitmq/amqp-client/5.4.3/amqp-client-5.4.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/rabbitmq/amqp-client/5.4.3/amqp-client-5.4.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/rabbitmq/amqp-client/5.4.3/amqp-client-5.4.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_sun_mail_javax_mail_1_6_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.sun.mail:javax.mail:1.6.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_zaxxer_HikariCP_2_7_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.zaxxer:HikariCP:2.7.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.2/HikariCP-2.7.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.2/HikariCP-2.7.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.2/HikariCP-2.7.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_zaxxer_HikariCP_2_7_9.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.zaxxer:HikariCP:2.7.9\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.zaxxer:HikariCP:3.2.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.2.0/HikariCP-3.2.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.2.0/HikariCP-3.2.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.2.0/HikariCP-3.2.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-beanutils:commons-beanutils:1.9.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_codec_commons_codec_1_11.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-codec:commons-codec:1.11\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-collections:commons-collections:3.2.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_lettuce_lettuce_core_5_0_5_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.lettuce:lettuce-core:5.0.5.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/lettuce/lettuce-core/5.0.5.RELEASE/lettuce-core-5.0.5.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/lettuce/lettuce-core/5.0.5.RELEASE/lettuce-core-5.0.5.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/lettuce/lettuce-core/5.0.5.RELEASE/lettuce-core-5.0.5.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_3_10_5_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty:3.10.5.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty/3.10.5.Final/netty-3.10.5.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty/3.10.5.Final/netty-3.10.5.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty/3.10.5.Final/netty-3.10.5.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_buffer_4_1_29_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty-buffer:4.1.29.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.29.Final/netty-buffer-4.1.29.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.29.Final/netty-buffer-4.1.29.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.29.Final/netty-buffer-4.1.29.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_codec_4_1_29_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty-codec:4.1.29.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.29.Final/netty-codec-4.1.29.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.29.Final/netty-codec-4.1.29.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.29.Final/netty-codec-4.1.29.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_common_4_1_29_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty-common:4.1.29.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.29.Final/netty-common-4.1.29.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.29.Final/netty-common-4.1.29.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.29.Final/netty-common-4.1.29.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_handler_4_1_29_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty-handler:4.1.29.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-handler/4.1.29.Final/netty-handler-4.1.29.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-handler/4.1.29.Final/netty-handler-4.1.29.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-handler/4.1.29.Final/netty-handler-4.1.29.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_resolver_4_1_29_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty-resolver:4.1.29.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.29.Final/netty-resolver-4.1.29.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.29.Final/netty-resolver-4.1.29.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.29.Final/netty-resolver-4.1.29.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_netty_netty_transport_4_1_29_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.netty:netty-transport:4.1.29.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.29.Final/netty-transport-4.1.29.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.29.Final/netty-transport-4.1.29.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.29.Final/netty-transport-4.1.29.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__io_projectreactor_reactor_core_3_1_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: io.projectreactor:reactor-core:3.1.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/projectreactor/reactor-core/3.1.10.RELEASE/reactor-core-3.1.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/projectreactor/reactor-core/3.1.10.RELEASE/reactor-core-3.1.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/io/projectreactor/reactor-core/3.1.10.RELEASE/reactor-core-3.1.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_activation_activation_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.activation:activation:1.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.activation:javax.activation-api:1.2.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.annotation:javax.annotation-api:1.3.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_persistence_javax_persistence_api_2_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.persistence:javax.persistence-api:2.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_transaction_javax_transaction_api_1_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.transaction:javax.transaction-api:1.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/transaction/javax.transaction-api/1.3/javax.transaction-api-1.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/transaction/javax.transaction-api/1.3/javax.transaction-api-1.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/transaction/javax.transaction-api/1.3/javax.transaction-api-1.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.validation:validation-api:1.1.0.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.validation:validation-api:2.0.1.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.xml.bind:jaxb-api:2.3.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__jline_jline_0_9_94.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: jline:jline:0.9.94\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/jline/jline/0.9.94/jline-0.9.94.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/jline/jline/0.9.94/jline-0.9.94-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/jline/jline/0.9.94/jline-0.9.94-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__junit_junit_4_12.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: junit:junit:4.12\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__mysql_mysql_connector_java_5_1_40.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: mysql:mysql-connector-java:5.1.40\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_bytebuddy_byte_buddy_1_7_11.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.bytebuddy:byte-buddy:1.7.11\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.bytebuddy:byte-buddy:1.9.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.9.3/byte-buddy-1.9.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.9.3/byte-buddy-1.9.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.9.3/byte-buddy-1.9.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.bytebuddy:byte-buddy-agent:1.7.11\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.bytebuddy:byte-buddy-agent:1.9.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.9.3/byte-buddy-agent-1.9.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.9.3/byte-buddy-agent-1.9.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.9.3/byte-buddy-agent-1.9.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.minidev:accessors-smart:1.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_minidev_json_smart_2_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.minidev:json-smart:2.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_sf_ehcache_ehcache_core_2_6_11.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.sf.ehcache:ehcache-core:2.6.11\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.commons:commons-lang3:3.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.commons:commons-lang3:3.8.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_commons_commons_pool2_2_5_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.commons:commons-pool2:2.5.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_curator_curator_client_2_12_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.curator:curator-client:2.12.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.12.0/curator-client-2.12.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.12.0/curator-client-2.12.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.12.0/curator-client-2.12.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_curator_curator_framework_2_12_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.curator:curator-framework:2.12.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-framework/2.12.0/curator-framework-2.12.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-framework/2.12.0/curator-framework-2.12.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-framework/2.12.0/curator-framework-2.12.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_curator_curator_recipes_2_11_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.curator:curator-recipes:2.11.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-recipes/2.11.0/curator-recipes-2.11.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-recipes/2.11.0/curator-recipes-2.11.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-recipes/2.11.0/curator-recipes-2.11.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.logging.log4j:log4j-api:2.10.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.logging.log4j:log4j-api:2.11.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.11.1/log4j-api-2.11.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.11.1/log4j-api-2.11.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.11.1/log4j-api-2.11.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.11.1/log4j-to-slf4j-2.11.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.11.1/log4j-to-slf4j-2.11.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.11.1/log4j-to-slf4j-2.11.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_cache_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-cache:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.4.0/shiro-cache-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.4.0/shiro-cache-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.4.0/shiro-cache-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-config-core:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.4.0/shiro-config-core-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.4.0/shiro-config-core-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.4.0/shiro-config-core-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-config-ogdl:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.4.0/shiro-config-ogdl-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.4.0/shiro-config-ogdl-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.4.0/shiro-config-ogdl-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_core_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-core:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.4.0/shiro-core-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.4.0/shiro-core-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.4.0/shiro-core-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.4.0/shiro-crypto-cipher-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.4.0/shiro-crypto-cipher-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.4.0/shiro-crypto-cipher-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-crypto-core:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.4.0/shiro-crypto-core-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.4.0/shiro-crypto-core-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.4.0/shiro-crypto-core-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-crypto-hash:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.4.0/shiro-crypto-hash-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.4.0/shiro-crypto-hash-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.4.0/shiro-crypto-hash-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_ehcache_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-ehcache:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.4.0/shiro-ehcache-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.4.0/shiro-ehcache-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.4.0/shiro-ehcache-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_event_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-event:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.4.0/shiro-event-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.4.0/shiro-event-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.4.0/shiro-event-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_lang_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-lang:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.4.0/shiro-lang-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.4.0/shiro-lang-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.4.0/shiro-lang-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_spring_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-spring:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.4.0/shiro-spring-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.4.0/shiro-spring-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.4.0/shiro-spring-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_shiro_shiro_web_1_4_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.shiro:shiro-web:1.4.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.4.0/shiro-web-1.4.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.4.0/shiro-web-1.4.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.4.0/shiro-web-1.4.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_34.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.34\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.34/tomcat-embed-core-8.5.34.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.34/tomcat-embed-core-8.5.34-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.34/tomcat-embed-core-8.5.34-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_34.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.34\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.34/tomcat-embed-el-8.5.34.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.34/tomcat-embed-el-8.5.34-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.34/tomcat-embed-el-8.5.34-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_34.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.34\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.34/tomcat-embed-websocket-8.5.34.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.34/tomcat-embed-websocket-8.5.34-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.34/tomcat-embed-websocket-8.5.34-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_tomcat_tomcat_annotations_api_8_5_34.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.tomcat:tomcat-annotations-api:8.5.34\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/tomcat-annotations-api/8.5.34/tomcat-annotations-api-8.5.34.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/tomcat-annotations-api/8.5.34/tomcat-annotations-api-8.5.34-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/tomcat/tomcat-annotations-api/8.5.34/tomcat-annotations-api-8.5.34-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_zookeeper_zookeeper_3_4_9.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.zookeeper:zookeeper:3.4.9\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/zookeeper/zookeeper/3.4.9/zookeeper-3.4.9.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/zookeeper/zookeeper/3.4.9/zookeeper-3.4.9-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/zookeeper/zookeeper/3.4.9/zookeeper-3.4.9-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.aspectj:aspectjweaver:1.8.13\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.aspectj:aspectjweaver:1.9.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.assertj:assertj-core:3.11.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_assertj_assertj_core_3_9_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.assertj:assertj-core:3.9.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_crazycake_shiro_redis_2_4_2_1_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.crazycake:shiro-redis:2.4.2.1-RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/crazycake/shiro-redis/2.4.2.1-RELEASE/shiro-redis-2.4.2.1-RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/crazycake/shiro-redis/2.4.2.1-RELEASE/shiro-redis-2.4.2.1-RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/crazycake/shiro-redis/2.4.2.1-RELEASE/shiro-redis-2.4.2.1-RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_dom4j_dom4j_2_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.dom4j:dom4j:2.1.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/dom4j/dom4j/2.1.1/dom4j-2.1.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hamcrest:hamcrest-core:1.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hamcrest:hamcrest-library:1.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_4_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate.common:hibernate-commons-annotations:5.0.4.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_hibernate_core_5_3_7_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate:hibernate-core:5.3.7.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-core/5.3.7.Final/hibernate-core-5.3.7.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-core/5.3.7.Final/hibernate-core-5.3.7.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-core/5.3.7.Final/hibernate-core-5.3.7.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_hibernate_validator_5_4_1_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate:hibernate-validator:5.4.1.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/5.4.1.Final/hibernate-validator-5.4.1.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/5.4.1.Final/hibernate-validator-5.4.1.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/5.4.1.Final/hibernate-validator-5.4.1.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_13_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate.validator:hibernate-validator:6.0.13.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.13.Final/hibernate-validator-6.0.13.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.13.Final/hibernate-validator-6.0.13.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.13.Final/hibernate-validator-6.0.13.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_javassist_javassist_3_20_0_GA.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.javassist:javassist:3.20.0-GA\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_javassist_javassist_3_23_1_GA.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.javassist:javassist:3.23.1-GA\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.23.1-GA/javassist-3.23.1-GA.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.23.1-GA/javassist-3.23.1-GA-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.23.1-GA/javassist-3.23.1-GA-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_jandex_2_0_5_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss:jandex:2.0.5.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_0_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss.logging:jboss-logging:3.3.0.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss.logging:jboss-logging:3.3.2.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_netty_netty_3_2_5_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss.netty:netty:3.2.5.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.2.5.Final/netty-3.2.5.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.2.5.Final/netty-3.2.5.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.2.5.Final/netty-3.2.5.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mapstruct_mapstruct_jdk8_1_2_0_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mapstruct:mapstruct-jdk8:1.2.0.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-jdk8/1.2.0.Final/mapstruct-jdk8-1.2.0.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-jdk8/1.2.0.Final/mapstruct-jdk8-1.2.0.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-jdk8/1.2.0.Final/mapstruct-jdk8-1.2.0.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mockito_mockito_core_2_15_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mockito:mockito-core:2.15.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mockito_mockito_core_2_23_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mockito:mockito-core:2.23.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.23.0/mockito-core-2.23.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.23.0/mockito-core-2.23.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.23.0/mockito-core-2.23.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mybatis_generator_mybatis_generator_core_1_3_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mybatis.generator:mybatis-generator-core:1.3.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/generator/mybatis-generator-core/1.3.7/mybatis-generator-core-1.3.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/generator/mybatis-generator-core/1.3.7/mybatis-generator-core-1.3.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/generator/mybatis-generator-core/1.3.7/mybatis-generator-core-1.3.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mybatis_mybatis_3_4_5.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mybatis:mybatis:3.4.5\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.5/mybatis-3.4.5.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.5/mybatis-3.4.5-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.5/mybatis-3.4.5-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mybatis:mybatis:3.4.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mybatis:mybatis-spring:1.3.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.1/mybatis-spring-1.3.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.1/mybatis-spring-1.3.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.1/mybatis-spring-1.3.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mybatis:mybatis-spring:1.3.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_objenesis_objenesis_2_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.objenesis:objenesis:2.6\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.ow2.asm:asm:5.0.4\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_projectlombok_lombok_1_16_18.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.projectlombok:lombok:1.16.18\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.16.18/lombok-1.16.18.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.16.18/lombok-1.16.18-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.16.18/lombok-1.16.18-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.reactivestreams:reactive-streams:1.0.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.skyscreamer:jsonassert:1.5.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.slf4j:jul-to-slf4j:1.7.25\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.slf4j:slf4j-api:1.7.25\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_amqp_spring_amqp_2_0_8_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.amqp:spring-amqp:2.0.8.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/amqp/spring-amqp/2.0.8.RELEASE/spring-amqp-2.0.8.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/amqp/spring-amqp/2.0.8.RELEASE/spring-amqp-2.0.8.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/amqp/spring-amqp/2.0.8.RELEASE/spring-amqp-2.0.8.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_amqp_spring_rabbit_2_0_8_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.amqp:spring-rabbit:2.0.8.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/amqp/spring-rabbit/2.0.8.RELEASE/spring-rabbit-2.0.8.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/amqp/spring-rabbit/2.0.8.RELEASE/spring-rabbit-2.0.8.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/amqp/spring-rabbit/2.0.8.RELEASE/spring-rabbit-2.0.8.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.6.RELEASE/spring-boot-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.6.RELEASE/spring-boot-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.6.RELEASE/spring-boot-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.1.0.RELEASE/spring-boot-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.1.0.RELEASE/spring-boot-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.1.0.RELEASE/spring-boot-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.6.RELEASE/spring-boot-autoconfigure-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.6.RELEASE/spring-boot-autoconfigure-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.6.RELEASE/spring-boot-autoconfigure-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.1.0.RELEASE/spring-boot-autoconfigure-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.1.0.RELEASE/spring-boot-autoconfigure-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.1.0.RELEASE/spring-boot-autoconfigure-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.6.RELEASE/spring-boot-configuration-processor-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.6.RELEASE/spring-boot-configuration-processor-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.6.RELEASE/spring-boot-configuration-processor-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-configuration-processor:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.1.0.RELEASE/spring-boot-configuration-processor-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.1.0.RELEASE/spring-boot-configuration-processor-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.1.0.RELEASE/spring-boot-configuration-processor-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.6.RELEASE/spring-boot-starter-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.6.RELEASE/spring-boot-starter-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.6.RELEASE/spring-boot-starter-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.1.0.RELEASE/spring-boot-starter-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.1.0.RELEASE/spring-boot-starter-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.1.0.RELEASE/spring-boot-starter-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_amqp_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-amqp:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-amqp/2.0.6.RELEASE/spring-boot-starter-amqp-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-amqp/2.0.6.RELEASE/spring-boot-starter-amqp-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-amqp/2.0.6.RELEASE/spring-boot-starter-amqp-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-aop:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.1.0.RELEASE/spring-boot-starter-aop-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.1.0.RELEASE/spring-boot-starter-aop-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.1.0.RELEASE/spring-boot-starter-aop-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-data-jpa:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-jpa/2.1.0.RELEASE/spring-boot-starter-data-jpa-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-jpa/2.1.0.RELEASE/spring-boot-starter-data-jpa-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-jpa/2.1.0.RELEASE/spring-boot-starter-data-jpa-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-data-redis:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-redis/2.0.6.RELEASE/spring-boot-starter-data-redis-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-redis/2.0.6.RELEASE/spring-boot-starter-data-redis-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-redis/2.0.6.RELEASE/spring-boot-starter-data-redis-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.6.RELEASE/spring-boot-starter-jdbc-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.6.RELEASE/spring-boot-starter-jdbc-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.6.RELEASE/spring-boot-starter-jdbc-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.1.0.RELEASE/spring-boot-starter-jdbc-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.1.0.RELEASE/spring-boot-starter-jdbc-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.1.0.RELEASE/spring-boot-starter-jdbc-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-json:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.6.RELEASE/spring-boot-starter-json-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.6.RELEASE/spring-boot-starter-json-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.6.RELEASE/spring-boot-starter-json-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-logging:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.6.RELEASE/spring-boot-starter-logging-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.6.RELEASE/spring-boot-starter-logging-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.6.RELEASE/spring-boot-starter-logging-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-logging:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.1.0.RELEASE/spring-boot-starter-logging-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.1.0.RELEASE/spring-boot-starter-logging-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.1.0.RELEASE/spring-boot-starter-logging-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-test:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.6.RELEASE/spring-boot-starter-test-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.6.RELEASE/spring-boot-starter-test-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.6.RELEASE/spring-boot-starter-test-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-test:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.1.0.RELEASE/spring-boot-starter-test-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.1.0.RELEASE/spring-boot-starter-test-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.1.0.RELEASE/spring-boot-starter-test-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.6.RELEASE/spring-boot-starter-tomcat-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.6.RELEASE/spring-boot-starter-tomcat-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.6.RELEASE/spring-boot-starter-tomcat-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-starter-web:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.6.RELEASE/spring-boot-starter-web-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.6.RELEASE/spring-boot-starter-web-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.6.RELEASE/spring-boot-starter-web-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-test:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.6.RELEASE/spring-boot-test-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.6.RELEASE/spring-boot-test-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.6.RELEASE/spring-boot-test-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-test:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.1.0.RELEASE/spring-boot-test-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.1.0.RELEASE/spring-boot-test-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.1.0.RELEASE/spring-boot-test-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_6_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.6.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.6.RELEASE/spring-boot-test-autoconfigure-2.0.6.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.6.RELEASE/spring-boot-test-autoconfigure-2.0.6.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.6.RELEASE/spring-boot-test-autoconfigure-2.0.6.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.1.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.1.0.RELEASE/spring-boot-test-autoconfigure-2.1.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.1.0.RELEASE/spring-boot-test-autoconfigure-2.1.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.1.0.RELEASE/spring-boot-test-autoconfigure-2.1.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_commons_2_0_11_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-commons:2.0.11.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.11.RELEASE/spring-data-commons-2.0.11.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.11.RELEASE/spring-data-commons-2.0.11.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.11.RELEASE/spring-data-commons-2.0.11.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-commons:2.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.1.2.RELEASE/spring-data-commons-2.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.1.2.RELEASE/spring-data-commons-2.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.1.2.RELEASE/spring-data-commons-2.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-jpa:2.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-jpa/2.1.2.RELEASE/spring-data-jpa-2.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-jpa/2.1.2.RELEASE/spring-data-jpa-2.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-jpa/2.1.2.RELEASE/spring-data-jpa-2.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_0_11_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-keyvalue:2.0.11.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-keyvalue/2.0.11.RELEASE/spring-data-keyvalue-2.0.11.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-keyvalue/2.0.11.RELEASE/spring-data-keyvalue-2.0.11.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-keyvalue/2.0.11.RELEASE/spring-data-keyvalue-2.0.11.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_redis_2_0_11_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-redis:2.0.11.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.0.11.RELEASE/spring-data-redis-2.0.11.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.0.11.RELEASE/spring-data-redis-2.0.11.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.0.11.RELEASE/spring-data-redis-2.0.11.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.retry:spring-retry:1.2.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/retry/spring-retry/1.2.2.RELEASE/spring-retry-1.2.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/retry/spring-retry/1.2.2.RELEASE/spring-retry-1.2.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/retry/spring-retry/1.2.2.RELEASE/spring-retry-1.2.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_aop_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-aop:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.10.RELEASE/spring-aop-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.10.RELEASE/spring-aop-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.10.RELEASE/spring-aop-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_aop_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-aop:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.1.2.RELEASE/spring-aop-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.1.2.RELEASE/spring-aop-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.1.2.RELEASE/spring-aop-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_aspects_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-aspects:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aspects/5.1.2.RELEASE/spring-aspects-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aspects/5.1.2.RELEASE/spring-aspects-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aspects/5.1.2.RELEASE/spring-aspects-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_beans_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-beans:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.10.RELEASE/spring-beans-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.10.RELEASE/spring-beans-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.10.RELEASE/spring-beans-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_beans_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-beans:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.1.2.RELEASE/spring-beans-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.1.2.RELEASE/spring-beans-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.1.2.RELEASE/spring-beans-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_context_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-context:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.10.RELEASE/spring-context-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.10.RELEASE/spring-context-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.10.RELEASE/spring-context-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_context_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-context:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.1.2.RELEASE/spring-context-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.1.2.RELEASE/spring-context-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.1.2.RELEASE/spring-context-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_context_support_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-context-support:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.10.RELEASE/spring-context-support-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.10.RELEASE/spring-context-support-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.10.RELEASE/spring-context-support-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_core_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-core:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.10.RELEASE/spring-core-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.10.RELEASE/spring-core-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.10.RELEASE/spring-core-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_core_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-core:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.1.2.RELEASE/spring-core-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.1.2.RELEASE/spring-core-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.1.2.RELEASE/spring-core-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_expression_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-expression:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.10.RELEASE/spring-expression-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.10.RELEASE/spring-expression-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.10.RELEASE/spring-expression-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_expression_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-expression:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.1.2.RELEASE/spring-expression-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.1.2.RELEASE/spring-expression-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.1.2.RELEASE/spring-expression-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_jcl_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-jcl:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.10.RELEASE/spring-jcl-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.10.RELEASE/spring-jcl-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.10.RELEASE/spring-jcl-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_jcl_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-jcl:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.1.2.RELEASE/spring-jcl-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.1.2.RELEASE/spring-jcl-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.1.2.RELEASE/spring-jcl-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_jdbc_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-jdbc:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.10.RELEASE/spring-jdbc-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.10.RELEASE/spring-jdbc-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.10.RELEASE/spring-jdbc-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_jdbc_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-jdbc:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.1.2.RELEASE/spring-jdbc-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.1.2.RELEASE/spring-jdbc-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.1.2.RELEASE/spring-jdbc-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_messaging_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-messaging:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-messaging/5.0.10.RELEASE/spring-messaging-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-messaging/5.0.10.RELEASE/spring-messaging-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-messaging/5.0.10.RELEASE/spring-messaging-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_orm_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-orm:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-orm/5.1.2.RELEASE/spring-orm-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-orm/5.1.2.RELEASE/spring-orm-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-orm/5.1.2.RELEASE/spring-orm-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_oxm_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-oxm:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-oxm/5.0.10.RELEASE/spring-oxm-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-oxm/5.0.10.RELEASE/spring-oxm-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-oxm/5.0.10.RELEASE/spring-oxm-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_test_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-test:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.10.RELEASE/spring-test-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.10.RELEASE/spring-test-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.10.RELEASE/spring-test-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_test_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-test:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.1.2.RELEASE/spring-test-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.1.2.RELEASE/spring-test-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.1.2.RELEASE/spring-test-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_tx_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-tx:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.10.RELEASE/spring-tx-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.10.RELEASE/spring-tx-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.10.RELEASE/spring-tx-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_tx_5_1_2_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-tx:5.1.2.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.1.2.RELEASE/spring-tx-5.1.2.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.1.2.RELEASE/spring-tx-5.1.2.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.1.2.RELEASE/spring-tx-5.1.2.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_web_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-web:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.10.RELEASE/spring-web-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.10.RELEASE/spring-web-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.10.RELEASE/spring-web-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_webmvc_5_0_10_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-webmvc:5.0.10.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.10.RELEASE/spring-webmvc-5.0.10.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.10.RELEASE/spring-webmvc-5.0.10.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.10.RELEASE/spring-webmvc-5.0.10.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_xmlunit_xmlunit_core_2_5_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.xmlunit:xmlunit-core:2.5.1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.xmlunit:xmlunit-core:2.6.2\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.6.2/xmlunit-core-2.6.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.6.2/xmlunit-core-2.6.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.6.2/xmlunit-core-2.6.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.yaml:snakeyaml:1.19\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.yaml:snakeyaml:1.23\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.23/snakeyaml-1.23-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.23/snakeyaml-1.23-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__redis_clients_jedis_2_9_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: redis.clients:jedis:2.9.0\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"JavaScriptSettings\">\n    <option name=\"languageLevel\" value=\"ES6\" />\n  </component>\n  <component name=\"MavenProjectsManager\">\n    <option name=\"originalFiles\">\n      <list>\n        <option value=\"$PROJECT_DIR$/pom.xml\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" project-jdk-name=\"1.8\" project-jdk-type=\"JavaSDK\" />\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/admin/admin.iml\" filepath=\"$PROJECT_DIR$/admin/admin.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/admin-web/admin-web.iml\" filepath=\"$PROJECT_DIR$/admin-web/admin-web.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/api/api.iml\" filepath=\"$PROJECT_DIR$/api/api.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/builder/builder.iml\" filepath=\"$PROJECT_DIR$/builder/builder.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/common/common.iml\" filepath=\"$PROJECT_DIR$/common/common.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/.idea/verifymaster.iml\" filepath=\"$PROJECT_DIR$/.idea/verifymaster.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/uiDesigner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Palette2\">\n    <group name=\"Swing\">\n      <item class=\"com.intellij.uiDesigner.HSpacer\" tooltip-text=\"Horizontal Spacer\" icon=\"/com/intellij/uiDesigner/icons/hspacer.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"1\" hsize-policy=\"6\" anchor=\"0\" fill=\"1\" />\n      </item>\n      <item class=\"com.intellij.uiDesigner.VSpacer\" tooltip-text=\"Vertical Spacer\" icon=\"/com/intellij/uiDesigner/icons/vspacer.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"1\" anchor=\"0\" fill=\"2\" />\n      </item>\n      <item class=\"javax.swing.JPanel\" icon=\"/com/intellij/uiDesigner/icons/panel.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"3\" hsize-policy=\"3\" anchor=\"0\" fill=\"3\" />\n      </item>\n      <item class=\"javax.swing.JScrollPane\" icon=\"/com/intellij/uiDesigner/icons/scrollPane.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"7\" hsize-policy=\"7\" anchor=\"0\" fill=\"3\" />\n      </item>\n      <item class=\"javax.swing.JButton\" icon=\"/com/intellij/uiDesigner/icons/button.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"3\" anchor=\"0\" fill=\"1\" />\n        <initial-values>\n          <property name=\"text\" value=\"Button\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JRadioButton\" icon=\"/com/intellij/uiDesigner/icons/radioButton.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"3\" anchor=\"8\" fill=\"0\" />\n        <initial-values>\n          <property name=\"text\" value=\"RadioButton\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JCheckBox\" icon=\"/com/intellij/uiDesigner/icons/checkBox.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"3\" anchor=\"8\" fill=\"0\" />\n        <initial-values>\n          <property name=\"text\" value=\"CheckBox\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JLabel\" icon=\"/com/intellij/uiDesigner/icons/label.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"0\" anchor=\"8\" fill=\"0\" />\n        <initial-values>\n          <property name=\"text\" value=\"Label\" />\n        </initial-values>\n      </item>\n      <item class=\"javax.swing.JTextField\" icon=\"/com/intellij/uiDesigner/icons/textField.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\">\n          <preferred-size width=\"150\" height=\"-1\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JPasswordField\" icon=\"/com/intellij/uiDesigner/icons/passwordField.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\">\n          <preferred-size width=\"150\" height=\"-1\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JFormattedTextField\" icon=\"/com/intellij/uiDesigner/icons/formattedTextField.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\">\n          <preferred-size width=\"150\" height=\"-1\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTextArea\" icon=\"/com/intellij/uiDesigner/icons/textArea.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTextPane\" icon=\"/com/intellij/uiDesigner/icons/textPane.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JEditorPane\" icon=\"/com/intellij/uiDesigner/icons/editorPane.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JComboBox\" icon=\"/com/intellij/uiDesigner/icons/comboBox.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"2\" anchor=\"8\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JTable\" icon=\"/com/intellij/uiDesigner/icons/table.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JList\" icon=\"/com/intellij/uiDesigner/icons/list.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"2\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTree\" icon=\"/com/intellij/uiDesigner/icons/tree.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"150\" height=\"50\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JTabbedPane\" icon=\"/com/intellij/uiDesigner/icons/tabbedPane.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"3\" hsize-policy=\"3\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"200\" height=\"200\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JSplitPane\" icon=\"/com/intellij/uiDesigner/icons/splitPane.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"3\" hsize-policy=\"3\" anchor=\"0\" fill=\"3\">\n          <preferred-size width=\"200\" height=\"200\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JSpinner\" icon=\"/com/intellij/uiDesigner/icons/spinner.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"true\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JSlider\" icon=\"/com/intellij/uiDesigner/icons/slider.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"8\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JSeparator\" icon=\"/com/intellij/uiDesigner/icons/separator.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"6\" anchor=\"0\" fill=\"3\" />\n      </item>\n      <item class=\"javax.swing.JProgressBar\" icon=\"/com/intellij/uiDesigner/icons/progressbar.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"0\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JToolBar\" icon=\"/com/intellij/uiDesigner/icons/toolbar.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"6\" anchor=\"0\" fill=\"1\">\n          <preferred-size width=\"-1\" height=\"20\" />\n        </default-constraints>\n      </item>\n      <item class=\"javax.swing.JToolBar$Separator\" icon=\"/com/intellij/uiDesigner/icons/toolbarSeparator.png\" removable=\"false\" auto-create-binding=\"false\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"0\" hsize-policy=\"0\" anchor=\"0\" fill=\"1\" />\n      </item>\n      <item class=\"javax.swing.JScrollBar\" icon=\"/com/intellij/uiDesigner/icons/scrollbar.png\" removable=\"false\" auto-create-binding=\"true\" can-attach-label=\"false\">\n        <default-constraints vsize-policy=\"6\" hsize-policy=\"0\" anchor=\"0\" fill=\"2\" />\n      </item>\n    </group>\n  </component>\n</project>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"$PROJECT_DIR$\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/verifymaster.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_5\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>"
  },
  {
    "path": "README.md",
    "content": "# Verify 1.6\r\n\r\n#### 项目介绍\r\n\r\n**专门为中小软件提供的开源JAVA网络验证系统**\r\n\r\n**快速让自己开发的软件拥有以下功能：**\r\n\r\n**目前的功能主要有：注册，登陆，绑定卡密，绑定机器，取软件版本，软件留言，修改密码，取卡密期限，rsa算法加密登陆，取软件信息**\r\n\r\n**后台页面6大模块**\r\n1. 接口管理\r\n2. 软件管理\r\n3. 日志管理\r\n4. 充值卡管理\r\n5. 用户管理\r\n6. 配置管理\r\n\r\n**系统亮点：**\r\n* 开放接口全部可以后台配置，进行ip限流配置管理，限制接口在 xx 分钟内容只能访问 xx 次\r\n* 开放接口全部进行了严格认证处理\r\n* 用户登陆注册日志看得见！图表展示，表格数据展示\r\n* 软件用户全可控，系统后台配置一下就行\r\n* 开源、稳定、安全的软件加密授权系统，让软件开发更简单、迅速\r\n\r\n#### 软件架构\r\n**项目采用spring boot + vue前后端分离架构开发，Idea ide开发**\r\n\r\n1. admin(为admin-web提供服务，service,mapper层处理)\r\n2. admin-web(提供给外部访问接口，controller)\r\n3. api(提供给各个服务的vo,bean等等使用)\r\n4. commom(自写的工具包)\r\n5. buider(数据库和java bean一键生成的项目)\r\n6. admin-web-page(后台管理页面(vue编写))\r\n7. sdk(各大语言的sdk(1.易语言sdk))\r\n\r\n**主要采用的技术有:**\r\n\r\n1. dubbo(项目rpc通信)\r\n2. mybatis plus(mapper访问层)\r\n3. hibernate(用于生成数据库和验证vo)\r\n4. shiro(登陆验证)\r\n5. 前端采用(vue - element ui)\r\n6. hutool(工具包)\r\n7. redis(用作缓存)\r\n8. mysql\r\n9. rabbit mq队列(用于邮箱发送邮件)\r\n10. mapstruct(对象之间的转换)\r\n11. lombok(用于类自动生成get set方法)\r\n12. zookeeper(用于dubbo和分布锁使用)\r\n13. hikari(数据库连接)\r\n\r\n#### 版本日志\r\n\r\n* 1.6 优化代码，修复已知问题，优化易语言demo\r\n* 1.5 优化代码 增加运行日志，增加开放接口后台管理，增强软件日志，优化易语言demo,优化后台页面增加loading\r\n* 1.3 修复易语言 demo和sdk,修复sql语句,增加批量删除卡密\r\n* 1.2 修复充值，易语言demo更新，修复vo验证字段,修复RspHandleAspect(优化ip访问控制，限制接口在 xx 分钟内容只能访问 xx 次),优化后台页面\r\n* 1.1 增加注册验证码，注册增加分布式锁，修复大量bug\r\n\r\n#### 使用说明\r\n\r\n1. 系统有个邮箱的概念，当别人发送软件留言的时候，可以通知到我们设置的邮箱号上面,我们设置的邮箱号是接收端，发送端是自己设置账号，重点来了\r\n邮箱号的密码，不是那个QQ密码，QQ邮箱要开启POP3/SMTP服务，然后拿到授权码，那个授权码就是密码了\r\n\r\n2. 系统对接了百度地图开放平台，用于拿到用户的ip地理位置\r\n百度开放平台：http://lbsyun.baidu.com/apiconsole/key\r\n进去创建应用，然后拿到那个ak，进入系统后台，设置下就可以了\r\n\r\n3. 系统管理的账户密码自行到mysql 数据库中自行录入\r\n\r\n4. builder项目运行主类就可以生成数据库了，记得先创建数据库，然后修改下application.properties配置，再运行\r\n\r\n5. 项目使用了lombok，请先用idea安好lombok插件\r\n\r\n#### 图片参考\r\n\r\n1. 后台系统页面\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-44-43.png)\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-45-09.png)\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-45-25.png)\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-45-45.png)\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-45-57.png)\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-46-06.png)\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2018-12-27_23-46-18.png)\r\n\r\n2. 易语言sdk\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2019-01-02_22-15-10.png)\r\n\r\n3. 易语言demo\r\n\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2019-01-17_17-45-21.png)\r\n![描述](https://open-source-orange.oss-cn-hangzhou.aliyuncs.com/%E7%A0%81%E4%BA%91/verify-%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81/Snipaste_2019-01-17_17-45-50.png)\r\n"
  },
  {
    "path": "admin/.gitignore",
    "content": "/target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n.sts4-cache\n\n### IntelliJ IDEA ###\n.idea\n*.iws\n*.iml\n*.ipr\n\n### NetBeans ###\n/nbproject/private/\n/build/\n/nbbuild/\n/dist/\n/nbdist/\n/.nb-gradle/"
  },
  {
    "path": "admin/.mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip\n"
  },
  {
    "path": "admin/log/admin.log",
    "content": "22:39:27.036 logback [main] INFO  c.a.d.common.logger.LoggerFactory - using logger: com.alibaba.dubbo.common.logger.slf4j.Slf4jLoggerAdapter\n22:39:27.038 logback [main] INFO  c.a.b.d.c.e.WelcomeLogoApplicationListener - \n\n :: Dubbo Spring Boot (v0.2.0) : https://github.com/apache/incubator-dubbo-spring-boot-project\n :: Dubbo (v2.6.2) : https://github.com/apache/incubator-dubbo\n :: Google group : dev@dubbo.incubator.apache.org\n\n22:39:27.043 logback [main] INFO  c.a.b.d.c.e.OverrideDubboConfigApplicationListener - Dubbo Config was overridden by externalized configuration {dubbo.application.name=com-orange-verify-server, dubbo.application.qosEnable=false, dubbo.protocol.port=8078, dubbo.provider.retries=0, dubbo.provider.timeout=10000, dubbo.registry.address=zookeeper://localhost:2181?client=curator, dubbo.registry.id=com-orange-verify, dubbo.scan.basePackages=com.orange.verify}\n22:39:27.155 logback [main] INFO  c.o.v.admin.AdminApplicationTests - Starting AdminApplicationTests on DESKTOP-K8BN3NL with PID 6404 (started by 10673 in E:\\project\\java\\orange\\verifymaster\\admin)\n22:39:27.157 logback [main] DEBUG c.o.v.admin.AdminApplicationTests - Running with Spring Boot v2.0.6.RELEASE, Spring v5.0.10.RELEASE\n22:39:27.158 logback [main] INFO  c.o.v.admin.AdminApplicationTests - No active profile set, falling back to default profiles: default\n22:39:27.260 logback [main] INFO  o.s.w.c.s.GenericWebApplicationContext - Refreshing org.springframework.web.context.support.GenericWebApplicationContext@4bc222e: startup date [Thu Jan 17 22:39:27 CST 2019]; root of context hierarchy\n22:39:28.382 logback [main] WARN  o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.orange.verify.dal.mapper.*]' package. Please check your configuration.\n22:39:28.594 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ApplicationConfig#0, class : com.alibaba.dubbo.config.ApplicationConfig] has been registered.\n22:39:28.596 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ApplicationConfig#0] has been registered.\n22:39:28.596 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com-orange-verify, class : com.alibaba.dubbo.config.RegistryConfig] has been registered.\n22:39:28.598 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com-orange-verify] has been registered.\n22:39:28.598 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ProtocolConfig#0, class : com.alibaba.dubbo.config.ProtocolConfig] has been registered.\n22:39:28.599 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ProtocolConfig#0] has been registered.\n22:39:28.604 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ProviderConfig#0, class : com.alibaba.dubbo.config.ProviderConfig] has been registered.\n22:39:28.604 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ProviderConfig#0] has been registered.\n22:39:28.788 logback [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!\n22:39:28.949 logback [main] INFO  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] BeanNameGenerator bean can't be found in BeanFactory with name [org.springframework.context.annotation.internalConfigurationBeanNameGenerator], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:28.949 logback [main] INFO  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] BeanNameGenerator will be a instance of org.springframework.context.annotation.AnnotationBeanNameGenerator , it maybe a potential problem on bean name generation., dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:28.993 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:accountImpl:com.orange.verify.api.service.AccountService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:28.998 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:accountLoginLogImpl:com.orange.verify.api.service.AccountLoginLogService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.002 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:accountRegisterLogImpl:com.orange.verify.api.service.AccountRegisterLogService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.004 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:baiduMapApiImpl:com.orange.verify.api.service.BaiduMapApiService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.006 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:cardImpl:com.orange.verify.api.service.CardService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.009 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:cardTypeImpl:com.orange.verify.api.service.CardTypeService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.012 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:emailAccountImpl:com.orange.verify.api.service.EmailAccountService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.013 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:interfaceManagementImpl:com.orange.verify.api.service.InterfaceManagementService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.017 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:softImpl:com.orange.verify.api.service.SoftService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.019 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:softLeaveMessageImpl:com.orange.verify.api.service.SoftLeaveMessageService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.020 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:softVersionsImpl:com.orange.verify.api.service.SoftVersionsService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.022 logback [main] WARN  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : ServiceBean:userImpl:com.orange.verify.api.service.UserService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.023 logback [main] INFO  c.a.d.c.s.b.f.a.ServiceAnnotationBeanPostProcessor -  [DUBBO] 12 annotated Dubbo's @Service Components { [Bean definition with name 'accountImpl': Generic bean: class [com.orange.verify.admin.impl.AccountImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\AccountImpl.class], Bean definition with name 'accountLoginLogImpl': Generic bean: class [com.orange.verify.admin.impl.AccountLoginLogImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\AccountLoginLogImpl.class], Bean definition with name 'accountRegisterLogImpl': Generic bean: class [com.orange.verify.admin.impl.AccountRegisterLogImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\AccountRegisterLogImpl.class], Bean definition with name 'baiduMapApiImpl': Generic bean: class [com.orange.verify.admin.impl.BaiduMapApiImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\BaiduMapApiImpl.class], Bean definition with name 'cardImpl': Generic bean: class [com.orange.verify.admin.impl.CardImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\CardImpl.class], Bean definition with name 'cardTypeImpl': Generic bean: class [com.orange.verify.admin.impl.CardTypeImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\CardTypeImpl.class], Bean definition with name 'emailAccountImpl': Generic bean: class [com.orange.verify.admin.impl.EmailAccountImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\EmailAccountImpl.class], Bean definition with name 'interfaceManagementImpl': Generic bean: class [com.orange.verify.admin.impl.InterfaceManagementImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\InterfaceManagementImpl.class], Bean definition with name 'softImpl': Generic bean: class [com.orange.verify.admin.impl.SoftImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\SoftImpl.class], Bean definition with name 'softLeaveMessageImpl': Generic bean: class [com.orange.verify.admin.impl.SoftLeaveMessageImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\SoftLeaveMessageImpl.class], Bean definition with name 'softVersionsImpl': Generic bean: class [com.orange.verify.admin.impl.SoftVersionsImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\SoftVersionsImpl.class], Bean definition with name 'userImpl': Generic bean: class [com.orange.verify.admin.impl.UserImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes\\com\\orange\\verify\\admin\\impl\\UserImpl.class]] } were scanned under package[com.orange.verify], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:29.025 logback [main] WARN  o.s.c.a.ConfigurationClassPostProcessor - Cannot enhance @Configuration bean definition 'com.alibaba.boot.dubbo.autoconfigure.DubboAutoConfiguration' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.\n22:39:29.579 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.amqp.rabbit.annotation.RabbitBootstrapConfiguration' of type [org.springframework.amqp.rabbit.annotation.RabbitBootstrapConfiguration$$EnhancerBySpringCGLIB$$b98451cd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:29.626 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:29.636 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$f318939f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:29.651 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'redisConfig' of type [com.orange.verify.admin.config.RedisConfig$$EnhancerBySpringCGLIB$$dcd29536] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:29.715 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:29.717 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:29.720 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:39:30.669 logback [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...\n22:39:31.048 logback [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.\n22:39:31.853 logback [main] INFO  o.a.c.f.imps.CuratorFrameworkImpl - Starting\n22:39:40.890 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT\n22:39:40.890 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:host.name=DESKTOP-K8BN3NL\n22:39:40.891 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.version=1.8.0_161\n22:39:40.892 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.vendor=Oracle Corporation\n22:39:40.892 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.home=D:\\work\\jdk\\jdk1.8\\jdk\\jre\n22:39:40.892 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.class.path=E:\\project\\java\\orange\\verifymaster\\admin\\target\\test-classes;E:\\project\\java\\orange\\verifymaster\\admin\\target\\classes;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-web\\2.0.6.RELEASE\\spring-boot-starter-web-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter\\2.0.6.RELEASE\\spring-boot-starter-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot\\2.0.6.RELEASE\\spring-boot-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-logging\\2.0.6.RELEASE\\spring-boot-starter-logging-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\ch\\qos\\logback\\logback-classic\\1.2.3\\logback-classic-1.2.3.jar;D:\\work\\maven\\m2\\repository\\ch\\qos\\logback\\logback-core\\1.2.3\\logback-core-1.2.3.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\logging\\log4j\\log4j-to-slf4j\\2.10.0\\log4j-to-slf4j-2.10.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\logging\\log4j\\log4j-api\\2.10.0\\log4j-api-2.10.0.jar;D:\\work\\maven\\m2\\repository\\org\\slf4j\\jul-to-slf4j\\1.7.25\\jul-to-slf4j-1.7.25.jar;D:\\work\\maven\\m2\\repository\\javax\\annotation\\javax.annotation-api\\1.3.2\\javax.annotation-api-1.3.2.jar;D:\\work\\maven\\m2\\repository\\org\\yaml\\snakeyaml\\1.19\\snakeyaml-1.19.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-json\\2.0.6.RELEASE\\spring-boot-starter-json-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-databind\\2.9.7\\jackson-databind-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-annotations\\2.9.0\\jackson-annotations-2.9.0.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-core\\2.9.7\\jackson-core-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\datatype\\jackson-datatype-jdk8\\2.9.7\\jackson-datatype-jdk8-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\datatype\\jackson-datatype-jsr310\\2.9.7\\jackson-datatype-jsr310-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\module\\jackson-module-parameter-names\\2.9.7\\jackson-module-parameter-names-2.9.7.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-tomcat\\2.0.6.RELEASE\\spring-boot-starter-tomcat-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\embed\\tomcat-embed-el\\8.5.34\\tomcat-embed-el-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\embed\\tomcat-embed-websocket\\8.5.34\\tomcat-embed-websocket-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\hibernate\\validator\\hibernate-validator\\6.0.13.Final\\hibernate-validator-6.0.13.Final.jar;D:\\work\\maven\\m2\\repository\\javax\\validation\\validation-api\\2.0.1.Final\\validation-api-2.0.1.Final.jar;D:\\work\\maven\\m2\\repository\\org\\jboss\\logging\\jboss-logging\\3.3.2.Final\\jboss-logging-3.3.2.Final.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\classmate\\1.3.4\\classmate-1.3.4.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-web\\5.0.10.RELEASE\\spring-web-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-beans\\5.0.10.RELEASE\\spring-beans-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-webmvc\\5.0.10.RELEASE\\spring-webmvc-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-aop\\5.0.10.RELEASE\\spring-aop-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-context\\5.0.10.RELEASE\\spring-context-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-expression\\5.0.10.RELEASE\\spring-expression-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\mysql\\mysql-connector-java\\5.1.40\\mysql-connector-java-5.1.40.jar;D:\\work\\maven\\m2\\repository\\com\\zaxxer\\HikariCP\\2.7.2\\HikariCP-2.7.2.jar;D:\\work\\maven\\m2\\repository\\org\\slf4j\\slf4j-api\\1.7.25\\slf4j-api-1.7.25.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-boot-starter\\3.0.6\\mybatis-plus-boot-starter-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus\\3.0.6\\mybatis-plus-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-extension\\3.0.6\\mybatis-plus-extension-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-core\\3.0.6\\mybatis-plus-core-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-annotation\\3.0.6\\mybatis-plus-annotation-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\github\\jsqlparser\\jsqlparser\\1.2\\jsqlparser-1.2.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-generator\\3.0.6\\mybatis-plus-generator-3.0.6.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-autoconfigure\\2.0.6.RELEASE\\spring-boot-autoconfigure-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-jdbc\\2.0.6.RELEASE\\spring-boot-starter-jdbc-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-configuration-processor\\2.0.6.RELEASE\\spring-boot-configuration-processor-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-test\\2.0.6.RELEASE\\spring-boot-starter-test-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-test\\2.0.6.RELEASE\\spring-boot-test-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-test-autoconfigure\\2.0.6.RELEASE\\spring-boot-test-autoconfigure-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\jayway\\jsonpath\\json-path\\2.4.0\\json-path-2.4.0.jar;D:\\work\\maven\\m2\\repository\\net\\minidev\\json-smart\\2.3\\json-smart-2.3.jar;D:\\work\\maven\\m2\\repository\\net\\minidev\\accessors-smart\\1.2\\accessors-smart-1.2.jar;D:\\work\\maven\\m2\\repository\\org\\ow2\\asm\\asm\\5.0.4\\asm-5.0.4.jar;D:\\work\\maven\\m2\\repository\\junit\\junit\\4.12\\junit-4.12.jar;D:\\work\\maven\\m2\\repository\\org\\assertj\\assertj-core\\3.9.1\\assertj-core-3.9.1.jar;D:\\work\\maven\\m2\\repository\\org\\mockito\\mockito-core\\2.15.0\\mockito-core-2.15.0.jar;D:\\work\\maven\\m2\\repository\\net\\bytebuddy\\byte-buddy\\1.7.11\\byte-buddy-1.7.11.jar;D:\\work\\maven\\m2\\repository\\net\\bytebuddy\\byte-buddy-agent\\1.7.11\\byte-buddy-agent-1.7.11.jar;D:\\work\\maven\\m2\\repository\\org\\objenesis\\objenesis\\2.6\\objenesis-2.6.jar;D:\\work\\maven\\m2\\repository\\org\\hamcrest\\hamcrest-core\\1.3\\hamcrest-core-1.3.jar;D:\\work\\maven\\m2\\repository\\org\\hamcrest\\hamcrest-library\\1.3\\hamcrest-library-1.3.jar;D:\\work\\maven\\m2\\repository\\org\\skyscreamer\\jsonassert\\1.5.0\\jsonassert-1.5.0.jar;D:\\work\\maven\\m2\\repository\\com\\vaadin\\external\\google\\android-json\\0.0.20131108.vaadin1\\android-json-0.0.20131108.vaadin1.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-core\\5.0.10.RELEASE\\spring-core-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-jcl\\5.0.10.RELEASE\\spring-jcl-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-test\\5.0.10.RELEASE\\spring-test-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\xmlunit\\xmlunit-core\\2.5.1\\xmlunit-core-2.5.1.jar;D:\\work\\maven\\m2\\repository\\com\\orange\\verify\\api\\1.0.0\\api-1.0.0.jar;D:\\work\\maven\\m2\\repository\\org\\hibernate\\hibernate-validator\\5.4.1.Final\\hibernate-validator-5.4.1.Final.jar;D:\\work\\maven\\m2\\repository\\com\\orange\\verify\\common\\1.0.0\\common-1.0.0.jar;D:\\work\\maven\\m2\\repository\\cn\\hutool\\hutool-all\\4.2.1\\hutool-all-4.2.1.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\commons\\commons-lang3\\3.7\\commons-lang3-3.7.jar;D:\\work\\maven\\m2\\repository\\commons-codec\\commons-codec\\1.11\\commons-codec-1.11.jar;D:\\work\\maven\\m2\\repository\\com\\sun\\mail\\javax.mail\\1.6.2\\javax.mail-1.6.2.jar;D:\\work\\maven\\m2\\repository\\javax\\activation\\activation\\1.1\\activation-1.1.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\embed\\tomcat-embed-core\\8.5.34\\tomcat-embed-core-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\tomcat-annotations-api\\8.5.34\\tomcat-annotations-api-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\projectlombok\\lombok\\1.16.18\\lombok-1.16.18.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\boot\\dubbo-spring-boot-starter\\0.2.0\\dubbo-spring-boot-starter-0.2.0.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\dubbo\\2.6.2\\dubbo-2.6.2.jar;D:\\work\\maven\\m2\\repository\\org\\javassist\\javassist\\3.20.0-GA\\javassist-3.20.0-GA.jar;D:\\work\\maven\\m2\\repository\\org\\jboss\\netty\\netty\\3.2.5.Final\\netty-3.2.5.Final.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\zookeeper\\zookeeper\\3.4.9\\zookeeper-3.4.9.jar;D:\\work\\maven\\m2\\repository\\jline\\jline\\0.9.94\\jline-0.9.94.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty\\3.10.5.Final\\netty-3.10.5.Final.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\curator\\curator-framework\\2.12.0\\curator-framework-2.12.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\curator\\curator-client\\2.12.0\\curator-client-2.12.0.jar;D:\\work\\maven\\m2\\repository\\com\\google\\guava\\guava\\16.0.1\\guava-16.0.1.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\boot\\dubbo-spring-boot-autoconfigure\\0.2.0\\dubbo-spring-boot-autoconfigure-0.2.0.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-support\\2.1.9\\mybatis-plus-support-2.1.9.jar;D:\\work\\maven\\m2\\repository\\org\\mybatis\\mybatis-spring\\1.3.1\\mybatis-spring-1.3.1.jar;D:\\work\\maven\\m2\\repository\\org\\mybatis\\mybatis\\3.4.5\\mybatis-3.4.5.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-context-support\\5.0.10.RELEASE\\spring-context-support-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-jdbc\\5.0.10.RELEASE\\spring-jdbc-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-tx\\5.0.10.RELEASE\\spring-tx-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-data-redis\\2.0.6.RELEASE\\spring-boot-starter-data-redis-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\data\\spring-data-redis\\2.0.11.RELEASE\\spring-data-redis-2.0.11.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\data\\spring-data-keyvalue\\2.0.11.RELEASE\\spring-data-keyvalue-2.0.11.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\data\\spring-data-commons\\2.0.11.RELEASE\\spring-data-commons-2.0.11.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-oxm\\5.0.10.RELEASE\\spring-oxm-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\io\\lettuce\\lettuce-core\\5.0.5.RELEASE\\lettuce-core-5.0.5.RELEASE.jar;D:\\work\\maven\\m2\\repository\\io\\projectreactor\\reactor-core\\3.1.10.RELEASE\\reactor-core-3.1.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\reactivestreams\\reactive-streams\\1.0.2\\reactive-streams-1.0.2.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-common\\4.1.29.Final\\netty-common-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-transport\\4.1.29.Final\\netty-transport-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-buffer\\4.1.29.Final\\netty-buffer-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-resolver\\4.1.29.Final\\netty-resolver-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-handler\\4.1.29.Final\\netty-handler-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-codec\\4.1.29.Final\\netty-codec-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\org\\mapstruct\\mapstruct-jdk8\\1.2.0.Final\\mapstruct-jdk8-1.2.0.Final.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-amqp\\2.0.6.RELEASE\\spring-boot-starter-amqp-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-messaging\\5.0.10.RELEASE\\spring-messaging-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\amqp\\spring-rabbit\\2.0.8.RELEASE\\spring-rabbit-2.0.8.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\amqp\\spring-amqp\\2.0.8.RELEASE\\spring-amqp-2.0.8.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\retry\\spring-retry\\1.2.2.RELEASE\\spring-retry-1.2.2.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\rabbitmq\\amqp-client\\5.4.3\\amqp-client-5.4.3.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\curator\\curator-recipes\\2.11.0\\curator-recipes-2.11.0.jar;\n22:39:40.893 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.library.path=D:\\work\\jdk\\jdk1.8\\jdk\\jre\\bin;C:\\WINDOWS\\Sun\\Java\\bin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;D:\\work\\jdk\\jdk1.8\\jdk\\bin;D:\\mysql-5.7.11-winx64\\mysql-5.7.11-winx64\\bin;C:\\Program Files\\dotnet\\;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn\\;D:\\work\\maven\\apache-maven-3.5.3-bin\\apache-maven-3.5.3\\bin;D:\\work\\thrift;C:\\WINDOWS\\System32\\OpenSSH\\;D:\\work\\node\\;D:\\work\\git\\Git\\bin;D:\\tool\\\\python\\Scripts\\;D:\\;ool\\\\python\\;C:\\;sers\\10673\\AppData\\Local\\Programs\\Python\\Launcher\\;C:\\Users\\10673\\AppData\\Local\\Microsoft\\WindowsApps;D:\\칫;C;\\Users\\10673\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\10673\\AppData\\Roaming\\npm;D:\\work\\ץ\\fiddler;;D:\\work\\docker\\Docker Toolbox;G:\\tool\\programming\\vscode\\Microsoft VS Code\\bin;.\n22:39:40.894 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.io.tmpdir=C:\\Users\\10673\\AppData\\Local\\Temp\\\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.compiler=<NA>\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:os.name=Windows 10\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:os.arch=amd64\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:os.version=10.0\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:user.name=10673\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:user.home=C:\\Users\\10673\n22:39:40.896 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:user.dir=E:\\project\\java\\orange\\verifymaster\\admin\n22:39:40.897 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@784223e9\n22:39:42.078 logback [main-SendThread(127.0.0.1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)\n22:39:42.081 logback [main-SendThread(127.0.0.1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session\n22:39:42.092 logback [main-SendThread(127.0.0.1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x1000027f4430068, negotiated timeout = 40000\n22:39:42.103 logback [main-EventThread] INFO  o.a.c.f.state.ConnectionStateManager - State change: CONNECTED\n22:39:43.942 logback [main] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]\n22:39:44.831 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: org.springframework.web.context.support.GenericWebApplicationContext@4bc222e: startup date [Thu Jan 17 22:39:27 CST 2019]; root of context hierarchy\n22:39:45.003 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/error]}\" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)\n22:39:45.006 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/error],produces=[text/html]}\" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)\n22:39:45.169 logback [main] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]\n22:39:45.170 logback [main] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]\n22:39:45.393 logback [main] INFO  c.a.d.c.s.b.f.a.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.ApplicationConfig#0] have been binding by prefix of configuration properties : dubbo.application\n22:39:45.408 logback [main] INFO  c.a.d.c.s.b.f.a.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com-orange-verify] have been binding by prefix of configuration properties : dubbo.registry\n22:39:45.425 logback [main] INFO  c.a.d.c.s.b.f.a.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.ProtocolConfig#0] have been binding by prefix of configuration properties : dubbo.protocol\n22:39:45.467 logback [main] INFO  c.a.d.c.s.b.f.a.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.ProviderConfig#0] have been binding by prefix of configuration properties : dubbo.provider\n22:39:47.526 logback [main] INFO  o.s.c.s.DefaultLifecycleProcessor - Starting beans in phase 2147483647\n22:39:47.565 logback [SimpleAsyncTaskExecutor-1] INFO  o.s.a.r.c.CachingConnectionFactory - Attempting to connect to: [localhost:5672]\n22:39:47.647 logback [SimpleAsyncTaskExecutor-1] INFO  o.s.a.r.c.CachingConnectionFactory - Created new connection: rabbitConnectionFactory#1ab14636:0/SimpleConnection@70e30e6d [delegate=amqp://guest@127.0.0.1:5672/, localPort= 53111]\n22:39:47.746 logback [main] INFO  o.s.s.a.ScheduledAnnotationBeanPostProcessor - No TaskScheduler/ScheduledExecutorService bean found for scheduled processing\n22:39:47.756 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.AccountService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.041 logback [pool-7-thread-1] INFO  c.o.v.a.scheduler.LogDeleteScheduler - ½־(ɾ־): 0\n22:39:48.043 logback [pool-7-thread-1] INFO  c.o.v.a.scheduler.LogDeleteScheduler - ע־(ɾ־): 0\n22:39:48.128 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.AccountService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.128 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.AccountService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.128 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.AccountService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735987776 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735987763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.447 logback [main] INFO  c.a.d.r.transport.AbstractServer -  [DUBBO] Start NettyServer bind /0.0.0.0:8078, export /169.254.195.210:8078, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.477 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Load registry store file C:\\Users\\10673\\.dubbo\\dubbo-registry-com-orange-verify-server-localhost:2181.cache, data: {com.orange.verify.api.service.AccountLoginLogService=empty://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982732, com.orange.verify.api.service.InterfaceManagementService=empty://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=17540&side=provider&timestamp=1547733982875, com.orange.verify.api.service.BaiduMapApiService=empty://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982786, com.orange.verify.api.service.UserService=empty://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982988, com.orange.verify.api.service.SoftService=empty://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=17540&side=provider&timestamp=1547733982907, com.orange.verify.api.service.SoftVersionsService=empty://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982971, com.orange.verify.api.service.CardTypeService=empty://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982838, com.orange.verify.api.service.SoftService:1.0.0=empty://169.254.195.210:20880/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=5000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=8416&revision=1.0.0&side=provider&timestamp=1544550062415&version=1.0.0, com.orange.verify.api.service.AccountRegisterLogService=empty://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982759, com.orange.verify.api.service.CardService=empty://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=17540&side=provider&timestamp=1547733982811, com.orange.verify.api.service.EmailAccountService=empty://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982855, com.orange.verify.api.service.AccountService=empty://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=17540&side=provider&timestamp=1547733982404, com.orange.verify.api.service.SoftLeaveMessageService=empty://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982954}, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.481 logback [main] INFO  o.a.c.f.imps.CuratorFrameworkImpl - Starting\n22:39:48.506 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=localhost:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@2d4fb0d8\n22:39:48.510 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.530 logback [main-SendThread(127.0.0.1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)\n22:39:48.531 logback [main-SendThread(127.0.0.1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session\n22:39:48.550 logback [main-SendThread(127.0.0.1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x1000027f4430069, negotiated timeout = 40000\n22:39:48.550 logback [main-EventThread] INFO  o.a.c.f.state.ConnectionStateManager - State change: CONNECTED\n22:39:48.620 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.730 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.761 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.AccountLoginLogService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.801 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.AccountLoginLogService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.801 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.AccountLoginLogService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.802 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.AccountLoginLogService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988763 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.802 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.834 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.983 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:48.984 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.AccountRegisterLogService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.008 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.AccountRegisterLogService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.009 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.AccountRegisterLogService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.009 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.AccountRegisterLogService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988987 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.010 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.056 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.262 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.263 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.BaiduMapApiService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.305 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.BaiduMapApiService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.305 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.BaiduMapApiService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.305 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.BaiduMapApiService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989275 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.307 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.351 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.427 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.428 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.CardService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.451 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.CardService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.452 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.CardService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.452 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.CardService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989430 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.453 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.533 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.664 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.665 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.CardTypeService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.700 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.CardTypeService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.701 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.CardTypeService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.701 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.CardTypeService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989673 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.702 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.734 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.818 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.820 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.EmailAccountService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.850 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.EmailAccountService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.850 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.EmailAccountService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.850 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.EmailAccountService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989823 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.862 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.877 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.895 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.896 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.InterfaceManagementService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.986 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.InterfaceManagementService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.987 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.InterfaceManagementService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:49.997 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.InterfaceManagementService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989898 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.002 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.027 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.044 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.046 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.SoftService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.071 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.SoftService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.072 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.SoftService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.073 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.SoftService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990050 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.076 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.098 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.114 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.115 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.SoftLeaveMessageService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.193 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.SoftLeaveMessageService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.193 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.SoftLeaveMessageService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.193 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.SoftLeaveMessageService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990117 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.239 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.277 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.302 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.303 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.SoftVersionsService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.324 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.SoftVersionsService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.324 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.SoftVersionsService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.325 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.SoftVersionsService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990311 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.326 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.339 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.348 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.348 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] The service ready on spring started. service: com.orange.verify.api.service.UserService, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.366 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.UserService to local registry, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.366 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Export dubbo service com.orange.verify.api.service.UserService to url dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.366 logback [main] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Register dubbo service com.orange.verify.api.service.UserService url dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990350 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&pid=6404&qos.enable=false&registry=zookeeper&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.368 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.386 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.395 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, urls: [empty://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:50.409 logback [main] INFO  c.o.v.admin.AdminApplicationTests - Started AdminApplicationTests in 23.904 seconds (JVM running for 25.281)\n22:39:50.412 logback [main] INFO  c.o.v.admin.runner.InterfaceRunner - ִȫӿ\n22:39:50.963 logback [main] INFO  io.lettuce.core.EpollProvider - Starting without optional epoll library\n22:39:50.965 logback [main] INFO  io.lettuce.core.KqueueProvider - Starting without optional kqueue library\n22:39:53.699 logback [main] INFO  c.o.v.admin.runner.InterfaceRunner - ִн\n22:39:53.923 logback [Thread-2] INFO  o.s.w.c.s.GenericWebApplicationContext - Closing org.springframework.web.context.support.GenericWebApplicationContext@4bc222e: startup date [Thu Jan 17 22:39:27 CST 2019]; root of context hierarchy\n22:39:53.936 logback [Thread-2] INFO  o.s.c.s.DefaultLifecycleProcessor - Stopping beans in phase 2147483647\n22:39:53.940 logback [DubboShutdownHook] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Run shutdown hook now., dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.940 logback [DubboShutdownHook] INFO  c.a.d.r.s.AbstractRegistryFactory -  [DUBBO] Close all registries [zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&interface=com.alibaba.dubbo.registry.RegistryService&pid=6404&qos.enable=false&timestamp=1547735987763], dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.940 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy registry:zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-server&client=curator&dubbo=2.6.2&interface=com.alibaba.dubbo.registry.RegistryService&pid=6404&qos.enable=false&timestamp=1547735987763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.940 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.948 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.949 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.952 logback [Thread-2] INFO  o.s.a.r.l.SimpleMessageListenerContainer - Waiting for workers to finish.\n22:39:53.954 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.955 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.963 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.963 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.967 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.968 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.975 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.975 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.984 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.985 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.990 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.990 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.995 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.995 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.998 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:53.999 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.002 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.003 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.008 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.008 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.013 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.013 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.014 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.014 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.014 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.014 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.014 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.014 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.016 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.017 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.018 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.018 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.019 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.020 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.020 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.020 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.020 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.020 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.021 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.022 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.023 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.023 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.023 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.023 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: provider://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.023 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url provider://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&category=configurators&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.027 logback [Curator-Framework-0] INFO  o.a.c.f.imps.CuratorFrameworkImpl - backgroundOperationsLoop exiting\n22:39:54.034 logback [DubboShutdownHook] INFO  org.apache.zookeeper.ZooKeeper - Session: 0x1000027f4430069 closed\n22:39:54.034 logback [main-EventThread] INFO  org.apache.zookeeper.ClientCnxn - EventThread shut down for session: 0x1000027f4430069\n22:39:54.036 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Close dubbo server: /169.254.195.210:8078, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.038 logback [DubboShutdownHook] INFO  c.a.d.r.transport.AbstractServer -  [DUBBO] Close NettyServer bind /0.0.0.0:8078, export /169.254.195.210:8078, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.040 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.040 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.040 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.040 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.040 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.041 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.043 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.043 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.043 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.043 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.dubbo.DubboProtocol -  [DUBBO] Unexport service: dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989823, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735987776, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990311, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989898, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990350, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.044 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989275, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.045 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990050, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.045 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989430, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.045 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988987, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.046 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735988763, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.046 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735990117, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.046 logback [DubboShutdownHook] INFO  c.a.d.r.protocol.injvm.InjvmProtocol -  [DUBBO] Unexport service: injvm://127.0.0.1/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&bind.ip=169.254.195.210&bind.port=8078&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=6404&qos.enable=false&revision=1.0.0&side=provider&timestamp=1547735989673, dubbo version: 2.6.2, current host: 169.254.195.210\n22:39:54.943 logback [Thread-2] INFO  o.s.a.r.l.SimpleMessageListenerContainer - Successfully waited for workers to finish.\n22:39:54.943 logback [Thread-2] INFO  o.s.c.s.DefaultLifecycleProcessor - Stopping beans in phase 0\n22:39:54.946 logback [Thread-2] INFO  o.s.a.r.l.SimpleMessageListenerContainer - Shutdown ignored - container is not active already\n22:39:54.958 logback [Thread-2] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...\n22:39:54.975 logback [Thread-2] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.\n22:39:56.097 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - class com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor was destroying!\n"
  },
  {
    "path": "admin/mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven2 Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\n  # TODO classpath?\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        wget \"$jarUrl\" -O \"$wrapperJarPath\"\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        curl -o \"$wrapperJarPath\" \"$jarUrl\"\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "admin/mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    http://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven2 Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\nFOR /F \"tokens=1,2 delims==\" %%A IN (%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties) DO (\n\tIF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B \n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    echo Found %WRAPPER_JAR%\n) else (\n    echo Couldn't find %WRAPPER_JAR%, downloading it ...\n\techo Downloading from: %DOWNLOAD_URL%\n    powershell -Command \"(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"\n    echo Finished downloading %WRAPPER_JAR%\n)\n@REM End of extension\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "admin/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.orange.verify</groupId>\n    <artifactId>admin</artifactId>\n    <version>1.0.0</version>\n    <packaging>jar</packaging>\n\n    <name>admin</name>\n    <description>Verify</description>\n\n    <parent>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-parent</artifactId>\n        <version>2.0.6.RELEASE</version>\n        <relativePath/> <!-- lookup parent from repository -->\n    </parent>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n    </properties>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>mysql</groupId>\n            <artifactId>mysql-connector-java</artifactId>\n            <version>5.1.40</version>\n        </dependency>\n\n        <dependency>\n            <groupId>com.zaxxer</groupId>\n            <artifactId>HikariCP</artifactId>\n            <version>2.7.2</version>\n        </dependency>\n\n        <dependency>\n            <groupId>com.baomidou</groupId>\n            <artifactId>mybatis-plus-boot-starter</artifactId>\n            <version>3.0.6</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.orange.verify</groupId>\n            <artifactId>api</artifactId>\n            <version>1.0.0</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.orange.verify</groupId>\n            <artifactId>common</artifactId>\n            <version>1.0.0</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <version>1.16.18</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.alibaba.boot</groupId>\n            <artifactId>dubbo-spring-boot-starter</artifactId>\n            <version>0.2.0</version>\n        </dependency>\n\n        <dependency>\n            <groupId>com.baomidou</groupId>\n            <artifactId>mybatis-plus-support</artifactId>\n            <version>2.1.9</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-redis</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.mapstruct</groupId>\n            <artifactId>mapstruct-jdk8</artifactId>\n            <version>1.2.0.Final</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-amqp</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.curator</groupId>\n            <artifactId>curator-recipes</artifactId>\n            <version>2.11.0</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.aspectj</groupId>\n            <artifactId>aspectjweaver</artifactId>\n            <version>1.8.13</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-annotations</artifactId>\n            <version>2.9.0</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-databind</artifactId>\n            <version>2.9.6</version>\n            <scope>compile</scope>\n        </dependency>\n\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.5.1</version>\n                <configuration>\n                    <source>${java.version}</source>\n                    <target>${java.version}</target>\n                    <encoding>UTF-8</encoding>\n                    <annotationProcessorPaths>\n                        <path>\n                            <groupId>org.mapstruct</groupId>\n                            <artifactId>mapstruct-processor</artifactId>\n                            <version>1.2.0.Final</version>\n                        </path>\n                    </annotationProcessorPaths>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/AdminApplication.java",
    "content": "package com.orange.verify.admin;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n@SpringBootApplication\n@EnableTransactionManagement\n@MapperScan(\"com.orange.verify.admin.mapper\")\n@ComponentScan(\"com.orange.verify\")\npublic class AdminApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(AdminApplication.class, args);\n    }\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/config/MyBatisPlusConfiguration.java",
    "content": "package com.orange.verify.admin.config;\n\nimport com.baomidou.mybatisplus.core.injector.ISqlInjector;\nimport com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;\nimport com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n@EnableTransactionManagement\n@Configuration\n@MapperScan(\"com.orange.verify.dal.mapper.*\")\npublic class MyBatisPlusConfiguration {\n    \n    /**\n     * 注册逻辑删除\n     */\n    @Bean\n    public ISqlInjector sqlInjector() {\n        return new LogicSqlInjector();\n    }\n\n    /**\n     * 分页插件\n     */\n    @Bean\n    public PaginationInterceptor paginationInterceptor() {\n        return new PaginationInterceptor();\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/config/MyMetaObjectHandler.java",
    "content": "package com.orange.verify.admin.config;\n\nimport com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;\nimport org.apache.ibatis.reflection.MetaObject;\nimport org.springframework.stereotype.Component;\n\n@Component\npublic class MyMetaObjectHandler implements MetaObjectHandler {\n\n    @Override\n    public void insertFill(MetaObject metaObject) {\n        this.setFieldValByName(\"createDate\", System.currentTimeMillis(), metaObject);\n    }\n\n    @Override\n    public void updateFill(MetaObject metaObject) {\n        this.setFieldValByName(\"updateDate\", System.currentTimeMillis(), metaObject);\n    }\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/config/RabbitMqConfig.java",
    "content": "package com.orange.verify.admin.config;\n\nimport org.springframework.amqp.core.Queue;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\npublic class RabbitMqConfig {\n\n    public static final String EMAIL_SEND_CODE = \"email_send_code\";\n\n    @Bean\n    public Queue queue() {\n        return new Queue(EMAIL_SEND_CODE);\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/config/RedisConfig.java",
    "content": "package com.orange.verify.admin.config;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonAutoDetect;\r\nimport com.fasterxml.jackson.annotation.JsonTypeInfo;\r\nimport com.fasterxml.jackson.annotation.PropertyAccessor;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport org.springframework.cache.CacheManager;\r\nimport org.springframework.cache.annotation.CachingConfigurerSupport;\r\nimport org.springframework.cache.annotation.EnableCaching;\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.context.annotation.Configuration;\r\nimport org.springframework.data.redis.connection.RedisConnectionFactory;\r\nimport org.springframework.data.redis.core.*;\r\nimport org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;\r\nimport org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;\r\nimport org.springframework.data.redis.serializer.RedisSerializer;\r\nimport org.springframework.data.redis.serializer.StringRedisSerializer;\r\n\r\n/**\r\n * RedisTemple\r\n */\r\n@Configuration\r\n@EnableCaching\r\npublic class RedisConfig extends CachingConfigurerSupport {\r\n\r\n    @Bean\r\n    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {\r\n\r\n        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();\r\n        redisTemplate.setConnectionFactory(connectionFactory);\r\n        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值（默认使用JDK的序列化方式）\r\n        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);\r\n        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);\r\n        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);\r\n\r\n        //使用StringRedisSerializer来序列化和反序列化redis的key值\r\n        RedisSerializer redisSerializer = new StringRedisSerializer();\r\n        //key\r\n        redisTemplate.setKeySerializer(redisSerializer);\r\n        redisTemplate.setHashKeySerializer(redisSerializer);\r\n        //value\r\n        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);\r\n        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);\r\n\r\n        redisTemplate.afterPropertiesSet();\r\n        return redisTemplate;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/config/ZookeeperLockConfig.java",
    "content": "package com.orange.verify.admin.config;\n\nimport org.apache.curator.RetryPolicy;\nimport org.apache.curator.framework.CuratorFramework;\nimport org.apache.curator.framework.CuratorFrameworkFactory;\nimport org.apache.curator.framework.recipes.locks.InterProcessMutex;\nimport org.apache.curator.retry.ExponentialBackoffRetry;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\npublic class ZookeeperLockConfig {\n\n    @Bean\n    public InterProcessMutex lock() {\n\n        //1、重试策略：初试时间为1s 重试3次\n        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);\n        //2、通过工厂创建连接\n        CuratorFramework client = CuratorFrameworkFactory.newClient(\"127.0.0.1:2181\", retryPolicy);\n        //3、开启连接\n        client.start();\n        //4 分布式锁\n        InterProcessMutex mutex = new InterProcessMutex(client, \"/curator/lock\");\n\n        return mutex;\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/AccountImpl.java",
    "content": "package com.orange.verify.admin.impl;\r\n\r\nimport cn.hutool.core.date.DateField;\r\nimport cn.hutool.core.date.DateTime;\r\nimport cn.hutool.core.date.DateUtil;\r\nimport cn.hutool.core.util.StrUtil;\r\nimport com.alibaba.dubbo.config.annotation.Service;\r\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\r\nimport com.orange.verify.admin.mapper.*;\r\nimport com.orange.verify.admin.service.BaiduMapApiServiceL;\r\nimport com.orange.verify.admin.transition.Transition;\r\nimport com.orange.verify.api.bean.*;\r\nimport com.orange.verify.api.sc.*;\r\nimport com.orange.verify.api.sr.ServiceResult;\r\nimport com.orange.verify.api.service.AccountService;\r\nimport com.orange.verify.api.sr.*;\r\nimport com.orange.verify.api.vo.AccountVo;\r\nimport com.orange.verify.api.vo.open.*;\r\nimport com.orange.verify.common.rsa.RsaUtil;\r\nimport org.apache.curator.framework.recipes.locks.InterProcessMutex;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.data.redis.core.RedisTemplate;\r\nimport org.springframework.transaction.annotation.Transactional;\r\nimport org.springframework.transaction.interceptor.TransactionAspectSupport;\r\n\r\nimport java.util.Date;\r\nimport java.util.Map;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\n@Service\r\npublic class AccountImpl extends ServiceImpl<AccountMapper, Account> implements AccountService {\r\n\r\n    @Autowired\r\n    private SoftMapper softMapper;\r\n\r\n    @Autowired\r\n    private CardMapper cardMapper;\r\n\r\n    @Autowired\r\n    private Transition transition;\r\n\r\n    @Autowired\r\n    private CardTypeMapper cardTypeMapper;\r\n\r\n    @Autowired\r\n    private AccountRegisterLogMapper accountRegisterLogMapper;\r\n\r\n    @Autowired\r\n    private AccountLoginLogMapper accountLoginLogMapper;\r\n\r\n    @Autowired\r\n    private RedisTemplate<String,Object> redisTemplate;\r\n\r\n    @Autowired\r\n    private BaiduMapApiServiceL baiduMapApiServiceL;\r\n\r\n    @Autowired\r\n    private InterProcessMutex lock;\r\n\r\n    @Override\r\n    public Page<AccountVo> page(AccountVo accountVo, Page page) {\r\n\r\n        return page.setRecords(super.baseMapper.page(accountVo,page));\r\n    }\r\n\r\n    @Override\r\n    public ServiceResult<String> getPublicKey() {\r\n\r\n        ServiceResult<String> result = new ServiceResult<>();\r\n\r\n        try {\r\n\r\n            Map<String, Object> initKey = RsaUtil.initKey();\r\n            String publicKeyToBase64 = RsaUtil.getPublicKeyToBase64(initKey);\r\n            String privateKeyToBase64 = RsaUtil.getPrivateKeyToBase64(initKey);\r\n\r\n            redisTemplate.opsForValue().set(publicKeyToBase64,privateKeyToBase64,10,TimeUnit.MINUTES);\r\n\r\n            result.setCode(AccountImplGetPublicKeyEnum.SUCCESS);\r\n            result.setData(publicKeyToBase64);\r\n\r\n            return result;\r\n\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplGetPublicKeyEnum.KEY_ERROR);\r\n            return result;\r\n        }\r\n\r\n    }\r\n\r\n    @Override\r\n    public void saveVerificationCode(AccountVerificationCodeVo accountVerificationCodeVo) {\r\n\r\n        String privateKey = (String) redisTemplate.opsForValue().get(accountVerificationCodeVo.getPublicKey());\r\n        if (!StrUtil.hasEmpty(privateKey)) {\r\n            redisTemplate.opsForValue().set(\"vc=\" + accountVerificationCodeVo.getPublicKey(),\r\n                    accountVerificationCodeVo.getCode(),10,TimeUnit.MINUTES);\r\n        }\r\n    }\r\n\r\n    @Override\r\n    @Transactional(rollbackFor = Exception.class)\r\n    public ServiceResult register(AccountRegisterVo accountRegisterVo) {\r\n\r\n        ServiceResult result = new ServiceResult<>();\r\n\r\n        String privateKey = (String) redisTemplate.opsForValue().get(accountRegisterVo.getPublicKey());\r\n        //钥匙不存在直接返回\r\n        if (StrUtil.hasEmpty(privateKey)) {\r\n            result.setCode(AccountImplRegisterEnum.KEY_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        //验证码不匹配直接返回\r\n        String vc = (String) redisTemplate.opsForValue().get(\"vc=\" + accountRegisterVo.getPublicKey());\r\n        if (StrUtil.hasEmpty(vc)) {\r\n            result.setCode(AccountImplRegisterEnum.VC_EMPTY);\r\n            return result;\r\n        } else if (!accountRegisterVo.getVc().equals(vc)) {\r\n            result.setCode(AccountImplRegisterEnum.VC_MISMATCHES);\r\n            return result;\r\n        }\r\n\r\n        //采用分布式锁进行用户名的唯一控制\r\n        try {\r\n            boolean acquire = lock.acquire(5, TimeUnit.SECONDS);\r\n            if (acquire == true) {\r\n                QueryWrapper<Account> username = new QueryWrapper<Account>().eq(\"username\",\r\n                        accountRegisterVo.getUsername());\r\n                Integer selectCount = super.baseMapper.selectCount(username);\r\n                //用户名是否存在\r\n                if (selectCount > 0) {\r\n                    result.setCode(AccountImplRegisterEnum.ACCOUNT_ALREADY_EXIST);\r\n                    return result;\r\n                }\r\n            } else {\r\n                result.setCode(AccountImplRegisterEnum.NIMIETY);\r\n                return result;\r\n            }\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplRegisterEnum.SERVER_ERROR);\r\n            return result;\r\n        } finally {\r\n            try {\r\n                lock.release();\r\n            } catch (Exception e) {\r\n                result.setCode(AccountImplRegisterEnum.SERVER_ERROR);\r\n                return result;\r\n            }\r\n        }\r\n\r\n        Soft soft = softMapper.selectById(accountRegisterVo.getSoftId());\r\n        if (soft == null) {\r\n            result.setCode(AccountImplRegisterEnum.SOFT_EMPTY);\r\n            return result;\r\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\r\n            result.setCode(AccountImplRegisterEnum.SOFT_CLOSE);\r\n            result.setMsg(soft.getServiceCloseMsg());\r\n            return result;\r\n        } else if (soft.getRegisterStatus() == SoftRegisterStatus.CLOSE.getStatusCode()) {\r\n            result.setCode(AccountImplRegisterEnum.REGISTER_CLOSE);\r\n            result.setMsg(soft.getRegisteCloseMsg());\r\n            return result;\r\n        }\r\n\r\n        //进行解密 >>> password 和 code >>> 解密成真实文本\r\n        String password = null;\r\n        String code = null;\r\n        try {\r\n            password = RsaUtil.decodeRsa(accountRegisterVo.getPassword(), privateKey);\r\n            code = RsaUtil.decodeRsa(accountRegisterVo.getCode(), privateKey);\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplRegisterEnum.KEY_ERROR);\r\n            return result;\r\n        }\r\n        if (StrUtil.hasEmpty(password)) {\r\n            result.setCode(AccountImplRegisterEnum.KEY_ERROR);\r\n            return result;\r\n        } else if (password.length() > 10 || password.length() < 5) {\r\n            result.setCode(AccountImplRegisterEnum.PASSWORD_LENGTH_ERROR);\r\n            return result;\r\n        }\r\n\r\n        //查询ip信息\r\n        String addressByIp = \"\";\r\n        try {\r\n            addressByIp = baiduMapApiServiceL.getIpInfo(accountRegisterVo.getIp());\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplRegisterEnum.BAIDU_API_ERROR);\r\n            return result;\r\n        }\r\n\r\n        //进行转型然后插入数据库\r\n        accountRegisterVo.setPassword(password);\r\n        accountRegisterVo.setCode(code);\r\n\r\n        Account account = transition.fromVo(accountRegisterVo);\r\n        account.setCreateIpInfo(addressByIp);\r\n\r\n        int insert = super.baseMapper.insert(account);\r\n        if (insert > 0) {\r\n            AccountRegisterLog accountRegisterLog = new AccountRegisterLog();\r\n            accountRegisterLog.setAccountId(account.getId());\r\n            accountRegisterLog.setIp(account.getCreateIp());\r\n            accountRegisterLog.setIpInfo(addressByIp);\r\n            accountRegisterLog.setSoftId(account.getSoftId());\r\n            accountRegisterLogMapper.insert(accountRegisterLog);\r\n\r\n            result.setCode(AccountImplRegisterEnum.REGISTER_SUCCESS);\r\n            return result;\r\n        }\r\n\r\n        result.setCode(AccountImplRegisterEnum.REGISTER_ERROR);\r\n        return result;\r\n    }\r\n\r\n    @Override\r\n    public ServiceResult login(AccountLoginVo accountLoginVo) {\r\n\r\n        ServiceResult result = new ServiceResult<>();\r\n\r\n        String privateKey = (String) redisTemplate.opsForValue().get(accountLoginVo.getPublicKey());\r\n        //钥匙不存在直接返回\r\n        if (StrUtil.hasEmpty(privateKey)) {\r\n            result.setCode(AccountImplLoginEnum.KEY_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        Soft soft = softMapper.selectById(accountLoginVo.getSoftId());\r\n        //软件不存在直接返回\r\n        if (soft == null) {\r\n            result.setCode(AccountImplLoginEnum.SOFT_EMPTY);\r\n            return result;\r\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\r\n            result.setCode(AccountImplLoginEnum.SOFT_CLOSE);\r\n            result.setMsg(soft.getServiceCloseMsg());\r\n            return result;\r\n        }\r\n\r\n        //判断用户不存在直接返回\r\n        Integer selectCount = super.baseMapper.selectCount(new QueryWrapper<Account>().eq(\"username\",\r\n                accountLoginVo.getUsername()).eq(\"soft_id\",accountLoginVo.getSoftId()));\r\n        if (selectCount < 1) {\r\n            result.setCode(AccountImplLoginEnum.ACCOUNT_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        //进行解密 >>> password 和 code >>> 解密成真实文本\r\n        String password = null;\r\n        String code = null;\r\n        try {\r\n            password = RsaUtil.decodeRsa(accountLoginVo.getPassword(), privateKey);\r\n            code = RsaUtil.decodeRsa(accountLoginVo.getCode(), privateKey);\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplLoginEnum.KEY_ERROR);\r\n            return result;\r\n        }\r\n        if (StrUtil.hasEmpty(password,code)) {\r\n            result.setCode(AccountImplLoginEnum.KEY_ERROR);\r\n            return result;\r\n        } else if (password.length() > 10 || password.length() < 5) {\r\n            result.setCode(AccountImplLoginEnum.PASSWORD_LENGTH_ERROR);\r\n            return result;\r\n        }\r\n\r\n        Account account = super.baseMapper.selectOne(new QueryWrapper<Account>().eq(\"username\",\r\n                accountLoginVo.getUsername()).eq(\"password\",password).eq(\"soft_id\",accountLoginVo.getSoftId()));\r\n        if (account == null) {\r\n            result.setCode(AccountImplLoginEnum.PASSWORD_ERROR);\r\n            return result;\r\n        }\r\n\r\n        //只支持单机进行机器码控制打开软件\r\n        if (soft.getDosingStrategy() == SoftDosingStrategy.SINGLE.getStatusCode()) {\r\n            QueryWrapper<Account> queryWrapper = new QueryWrapper<Account>().eq(\"username\",\r\n                    accountLoginVo.getUsername()).eq(\"password\",password).eq(\"soft_id\",accountLoginVo.getSoftId());\r\n            queryWrapper = queryWrapper.eq(\"code\",code);\r\n            Account accountQ = super.baseMapper.selectOne(queryWrapper);\r\n            if (accountQ == null) {\r\n                result.setCode(AccountImplLoginEnum.LOGIN_ERROR);\r\n                return result;\r\n            }\r\n        }\r\n\r\n        if (account.getBlacklist() == AccountBlackList.YES.getStatusCode()) {\r\n            result.setCode(AccountImplLoginEnum.ACCOUNT_BLACKLIST);\r\n            return result;\r\n        }\r\n\r\n        if (soft.getServiceStatus() == SoftServiceStatus.CHARGE.getStatusCode()) {\r\n            String cardId = account.getCardId();\r\n            if (StrUtil.hasEmpty(cardId)) {\r\n                result.setCode(AccountImplLoginEnum.ACCOUNT_NOT_BOUND_CARD);\r\n                return result;\r\n            }\r\n            Card card = cardMapper.selectById(cardId);\r\n            if (card == null) {\r\n                result.setCode(AccountImplLoginEnum.ACCOUNT_NOT_BOUND_CARD);\r\n                return result;\r\n            } else if (card.getClosure() == CardClosure.YES.getStatusCode()) {\r\n                result.setCode(AccountImplLoginEnum.CARD_CLOSURE);\r\n                return result;\r\n            }\r\n            long totalTime = card.getEndDate() - System.currentTimeMillis();\r\n            if (totalTime < 1) {\r\n                result.setCode(AccountImplLoginEnum.CARD_PAST_DUE);\r\n                return result;\r\n            }\r\n        }\r\n\r\n        //查询ip信息\r\n        String addressByIp = \"\";\r\n        try {\r\n            addressByIp = baiduMapApiServiceL.getIpInfo(accountLoginVo.getIp());\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplLoginEnum.BAIDU_API_ERROR);\r\n            return result;\r\n        }\r\n\r\n        AccountLoginLog accountLoginLog = new AccountLoginLog();\r\n        accountLoginLog.setAccountId(account.getId());\r\n        accountLoginLog.setIp(accountLoginVo.getIp());\r\n        accountLoginLog.setIpInfo(addressByIp);\r\n        accountLoginLog.setSoftId(accountLoginVo.getSoftId());\r\n        accountLoginLogMapper.insert(accountLoginLog);\r\n\r\n        result.setCode(AccountImplLoginEnum.LOGIN_SUCCESS);\r\n        return result;\r\n    }\r\n\r\n    @Override\r\n    @Transactional(rollbackFor = Exception.class)\r\n    public ServiceResult bindingCard(AccountBindingCardVo accountBindingCardVo) {\r\n\r\n        ServiceResult result = new ServiceResult<>();\r\n\r\n        String privateKey = (String) redisTemplate.opsForValue().get(accountBindingCardVo.getPublicKey());\r\n        //钥匙不存在直接返回\r\n        if (StrUtil.hasEmpty(privateKey)) {\r\n            result.setCode(AccountImplBindingCardEnum.KEY_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        Soft soft = softMapper.selectById(accountBindingCardVo.getSoftId());\r\n        //软件不存在直接返回\r\n        if (soft == null) {\r\n            result.setCode(AccountImplBindingCardEnum.SOFT_EMPTY);\r\n            return result;\r\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCardEnum.SOFT_CLOSE);\r\n            result.setMsg(soft.getServiceCloseMsg());\r\n            return result;\r\n        } else if (soft.getServiceStatus() == SoftServiceStatus.FREE.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCardEnum.SOFT_FREE);\r\n            return result;\r\n        }\r\n\r\n        //判断用户不存在直接返回\r\n        Integer selectCount = super.baseMapper.selectCount(new QueryWrapper<Account>().eq(\"username\",\r\n                accountBindingCardVo.getUsername()).eq(\"soft_id\",accountBindingCardVo.getSoftId()));\r\n        if (selectCount < 1) {\r\n            result.setCode(AccountImplBindingCardEnum.ACCOUNT_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        //进行解密 >>> password 和 code >>> 解密成真实文本\r\n        String password = null;\r\n        String code = null;\r\n        try {\r\n            password = RsaUtil.decodeRsa(accountBindingCardVo.getPassword(), privateKey);\r\n            code = RsaUtil.decodeRsa(accountBindingCardVo.getCode(), privateKey);\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplBindingCardEnum.KEY_ERROR);\r\n            return result;\r\n        }\r\n        if (StrUtil.hasEmpty(password,code)) {\r\n            result.setCode(AccountImplBindingCardEnum.KEY_ERROR);\r\n            return result;\r\n        } else if (password.length() > 10 || password.length() < 5) {\r\n            result.setCode(AccountImplBindingCardEnum.PASSWORD_LENGTH_ERROR);\r\n            return result;\r\n        }\r\n\r\n        Account account = super.baseMapper.selectOne(new QueryWrapper<Account>().eq(\"username\",\r\n                accountBindingCardVo.getUsername()).eq(\"password\",password).eq(\"soft_id\",accountBindingCardVo.getSoftId()));\r\n        if (account == null) {\r\n            result.setCode(AccountImplBindingCardEnum.PASSWORD_ERROR);\r\n            return result;\r\n        } else if (account.getBlacklist() == AccountBlackList.YES.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCardEnum.ACCOUNT_BLACKLIST);\r\n            return result;\r\n        }\r\n\r\n        Card card = cardMapper.selectOne(new QueryWrapper<Card>().eq(\"card_number\",\r\n                accountBindingCardVo.getCardNumber()));\r\n        if (card == null) {\r\n            result.setCode(AccountImplBindingCardEnum.CARD_EMPTY);\r\n            return result;\r\n        } else if (card.getUseStatus() == CardUseStatus.YES.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCardEnum.CARD_USE);\r\n            return result;\r\n        } else if (card.getClosure() == CardClosure.YES.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCardEnum.CARD_CLOSURE);\r\n            return result;\r\n        }\r\n\r\n        CardType cardType = cardTypeMapper.selectById(card.getCardTypeId());\r\n        if (cardType == null) {\r\n            result.setCode(AccountImplBindingCardEnum.CARD_EMPTY);\r\n            return result;\r\n        } else if (!accountBindingCardVo.getSoftId().equals(cardType.getSoftId())) {\r\n            result.setCode(AccountImplBindingCardEnum.SOFT_INCONSISTENCY);\r\n            return result;\r\n        }\r\n\r\n        //开始使用时间和结束使用期间\r\n        String now = DateUtil.now();\r\n        Date date = DateUtil.parse(now);\r\n        long startTime = date.getTime();\r\n        long endTime = 0;\r\n        DateTime dateTime = null;\r\n\r\n        switch (cardType.getUnit()) {\r\n            case 0:\r\n                dateTime = DateUtil.offsetMinute(date, cardType.getValue());\r\n                break;\r\n            case 1:\r\n                dateTime = DateUtil.offsetHour(date, cardType.getValue());\r\n                break;\r\n            case 2:\r\n                dateTime = DateUtil.offsetDay(date, cardType.getValue());\r\n                break;\r\n            case 3:\r\n                dateTime = DateUtil.offsetWeek(date, cardType.getValue());\r\n                break;\r\n            case 4:\r\n                dateTime = DateUtil.offsetMonth(date, cardType.getValue());\r\n                break;\r\n            case 5:\r\n                dateTime = DateUtil.offset(date, DateField.YEAR, cardType.getValue());\r\n                break;\r\n        }\r\n        endTime = dateTime.getTime();\r\n\r\n        Card cardUpdate = new Card();\r\n        cardUpdate.setId(card.getId());\r\n        cardUpdate.setStartDate(startTime);\r\n        cardUpdate.setEndDate(endTime);\r\n        cardUpdate.setUseStatus(1);\r\n        cardUpdate.setSellStatus(1);\r\n        cardUpdate.setAccountId(account.getId());\r\n        int cardUpdateResult = cardMapper.updateById(cardUpdate);\r\n\r\n        Account accountUpdate = new Account();\r\n        accountUpdate.setId(account.getId());\r\n        accountUpdate.setCardId(card.getId());\r\n        accountUpdate.setCode(code);\r\n        int accountUpdateResult = super.baseMapper.updateById(accountUpdate);\r\n\r\n        if (cardUpdateResult > 0 && accountUpdateResult > 0) {\r\n            result.setCode(AccountImplBindingCardEnum.BINDING_CARD_SUCCESS);\r\n            return result;\r\n        }\r\n\r\n        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();\r\n        result.setCode(AccountImplBindingCardEnum.BINDING_CARD_ERROR);\r\n        return result;\r\n    }\r\n\r\n    @Override\r\n    public ServiceResult bindingCode(AccountBindingCodeVo accountBindingCodeVo) {\r\n\r\n        ServiceResult result = new ServiceResult<>();\r\n\r\n        String privateKey = (String) redisTemplate.opsForValue().get(accountBindingCodeVo.getPublicKey());\r\n        //钥匙不存在直接返回\r\n        if (StrUtil.hasEmpty(privateKey)) {\r\n            result.setCode(AccountImplBindingCodeEnum.KEY_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        Soft soft = softMapper.selectById(accountBindingCodeVo.getSoftId());\r\n        //软件不存在直接返回\r\n        if (soft == null) {\r\n            result.setCode(AccountImplBindingCodeEnum.SOFT_EMPTY);\r\n            return result;\r\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCodeEnum.SOFT_CLOSE);\r\n            result.setMsg(soft.getServiceCloseMsg());\r\n            return result;\r\n        } else if (soft.getChangeStrategy() == SoftChangeStrategy.NO.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCodeEnum.SOFT_NO_CHANGE);\r\n            return result;\r\n        }\r\n\r\n        //判断用户不存在直接返回\r\n        Integer selectCount = super.baseMapper.selectCount(new QueryWrapper<Account>().eq(\"username\",\r\n                accountBindingCodeVo.getUsername()).eq(\"soft_id\",accountBindingCodeVo.getSoftId()));\r\n        if (selectCount < 1) {\r\n            result.setCode(AccountImplBindingCardEnum.ACCOUNT_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        //进行解密 >>> password 和 code >>> 解密成真实文本\r\n        String password = null;\r\n        String code = null;\r\n        try {\r\n            password = RsaUtil.decodeRsa(accountBindingCodeVo.getPassword(), privateKey);\r\n            code = RsaUtil.decodeRsa(accountBindingCodeVo.getCode(), privateKey);\r\n        } catch (Exception e) {\r\n            result.setCode(AccountImplBindingCodeEnum.KEY_ERROR);\r\n            return result;\r\n        }\r\n        if (StrUtil.hasEmpty(password,code)) {\r\n            result.setCode(AccountImplBindingCodeEnum.KEY_ERROR);\r\n            return result;\r\n        } else if (password.length() > 10 || password.length() < 5) {\r\n            result.setCode(AccountImplBindingCodeEnum.PASSWORD_LENGTH_ERROR);\r\n            return result;\r\n        }\r\n\r\n        Account account = super.baseMapper.selectOne(new QueryWrapper<Account>().eq(\"username\",\r\n                accountBindingCodeVo.getUsername()).eq(\"password\",password).eq(\"soft_id\",accountBindingCodeVo.getSoftId()));\r\n        if (account == null) {\r\n            result.setCode(AccountImplBindingCodeEnum.PASSWORD_ERROR);\r\n            return result;\r\n        } else if (account.getBlacklist() == AccountBlackList.YES.getStatusCode()) {\r\n            result.setCode(AccountImplBindingCodeEnum.ACCOUNT_BLACKLIST);\r\n            return result;\r\n        }\r\n\r\n        Account accountUpdate = new Account();\r\n        accountUpdate.setId(account.getId());\r\n        accountUpdate.setCode(code);\r\n        int updateById = super.baseMapper.updateById(accountUpdate);\r\n        if (updateById > 0) {\r\n            result.setCode(AccountImplBindingCodeEnum.BINDING_CODE_SUCCESS);\r\n            return result;\r\n        }\r\n\r\n        result.setCode(AccountImplBindingCodeEnum.BINDING_CODE_ERROR);\r\n        return result;\r\n    }\r\n\r\n    @Override\r\n    public ServiceResult updatePassword(AccountUpdatePasswordVo accountUpdatePasswordVo) {\r\n\r\n        ServiceResult result = new ServiceResult<>();\r\n\r\n        Soft soft = softMapper.selectById(accountUpdatePasswordVo.getSoftId());\r\n        //软件不存在直接返回\r\n        if (soft == null) {\r\n            result.setCode(AccountImplUpdatePasswordEnum.SOFT_EMPTY);\r\n            return result;\r\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\r\n            result.setCode(AccountImplUpdatePasswordEnum.SOFT_CLOSE);\r\n            result.setMsg(soft.getServiceCloseMsg());\r\n            return result;\r\n        }\r\n\r\n        Account accountF = super.baseMapper.selectOne(new QueryWrapper<Account>().eq(\"username\",\r\n                accountUpdatePasswordVo.getUsername()).eq(\"soft_id\",accountUpdatePasswordVo.getSoftId()));\r\n        if (accountF == null) {\r\n            result.setCode(AccountImplUpdatePasswordEnum.ACCOUNT_EMPTY);\r\n            return result;\r\n        }\r\n\r\n        Account account = super.baseMapper.selectOne(new QueryWrapper<Account>().eq(\"username\",\r\n                accountUpdatePasswordVo.getUsername()).eq(\"security_code\",accountUpdatePasswordVo.getSecurityCode()));\r\n        if (account == null) {\r\n            result.setCode(AccountImplUpdatePasswordEnum.SECURITY_CODE_ERROR);\r\n            return result;\r\n        } else if (account.getBlacklist() == AccountBlackList.YES.getStatusCode()) {\r\n            result.setCode(AccountImplUpdatePasswordEnum.ACCOUNT_BLACKLIST);\r\n            return result;\r\n        }\r\n\r\n        int updatePassword = super.baseMapper.updatePassword(accountUpdatePasswordVo);\r\n        if (updatePassword > 0) {\r\n            result.setCode(AccountImplUpdatePasswordEnum.UPDATE_PASSWORD_SUCCESS);\r\n            return result;\r\n        }\r\n\r\n        result.setCode(AccountImplUpdatePasswordEnum.UPDATE_PASSWORD_ERROR);\r\n        return result;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/AccountLoginLogImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.AccountLoginLogMapper;\nimport com.orange.verify.api.bean.AccountLoginLog;\nimport com.orange.verify.api.service.AccountLoginLogService;\nimport com.orange.verify.api.vo.AccountLoginLogVo;\n\nimport java.util.List;\n\n@Service\npublic class AccountLoginLogImpl extends ServiceImpl<AccountLoginLogMapper, AccountLoginLog>\n        implements AccountLoginLogService {\n\n\n    @Override\n    public List<String> getBeforeData(String softId) {\n\n        return super.baseMapper.getBeforeData(softId);\n    }\n\n    @Override\n    public Page<AccountLoginLogVo> page(AccountLoginLogVo accountLoginLog, Page page) {\n\n        return page.setRecords(super.baseMapper.page(accountLoginLog,page));\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/AccountRegisterLogImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.AccountRegisterLogMapper;\nimport com.orange.verify.api.bean.AccountRegisterLog;\nimport com.orange.verify.api.service.AccountRegisterLogService;\nimport com.orange.verify.api.vo.AccountRegisterLogVo;\n\nimport java.util.List;\n\n@Service\npublic class AccountRegisterLogImpl extends ServiceImpl<AccountRegisterLogMapper, AccountRegisterLog>\n        implements AccountRegisterLogService {\n\n    @Override\n    public List<String> getBeforeData(String softId) {\n\n        return super.baseMapper.getBeforeData(softId);\n    }\n\n    @Override\n    public Page<AccountRegisterLogVo> page(AccountRegisterLog accountRegisterLog, Page page) {\n\n        return page.setRecords(super.baseMapper.page(accountRegisterLog,page));\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/BaiduMapApiImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.BaiduMapApiMapper;\nimport com.orange.verify.api.bean.BaiduMapApi;\nimport com.orange.verify.api.service.BaiduMapApiService;\nimport com.orange.verify.common.ip.BaiduIp;\n\n@Service\npublic class BaiduMapApiImpl extends ServiceImpl<BaiduMapApiMapper, BaiduMapApi> implements BaiduMapApiService {\n\n    @Override\n    public boolean create(BaiduMapApi baiduMapApi) {\n\n        int baiduMapApiCount = super.baseMapper.getBaiduMapApiCount();\n        if (baiduMapApiCount == 0) {\n            if (super.baseMapper.insert(baiduMapApi) == 1) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/CardImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.CardMapper;\nimport com.orange.verify.api.bean.Card;\nimport com.orange.verify.api.service.CardService;\nimport com.orange.verify.api.vo.CardVo;\nimport com.orange.verify.api.vo.open.CardTimeLimitVo;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport java.util.List;\nimport java.util.UUID;\n\n@Service\npublic class CardImpl extends ServiceImpl<CardMapper, Card> implements CardService {\n\n\n    @Override\n    public Page<CardVo> page(CardVo cardVo, Page page) {\n\n        return page.setRecords(super.baseMapper.page(cardVo,page));\n    }\n\n    @Override\n    @Transactional(rollbackFor = Exception.class)\n    public void saveLogic(Card card, Integer count) {\n\n        for (int i = 0;i < count;i++) {\n            Card cardSave = new Card();\n            cardSave.setCardTypeId(card.getCardTypeId());\n            cardSave.setCardNumber(UUID.randomUUID().toString().replaceAll(\"-\",\"\"));\n            super.baseMapper.insert(cardSave);\n        }\n    }\n\n    @Override\n    public CardTimeLimitVo getCardTimeLimit(String username,String password,String softId) {\n\n        return super.baseMapper.getCardTimeLimit(username,password,softId);\n    }\n\n    @Override\n    @Transactional(rollbackFor = Exception.class)\n    public void sell(List<String> sell) {\n\n        for (String id : sell) {\n            Card card = new Card();\n            card.setId(id);\n            card.setSellStatus(1);\n            super.baseMapper.updateById(card);\n        }\n    }\n\n    @Override\n    @Transactional(rollbackFor = Exception.class)\n    public void batchRemove(List<String> cardList) {\n\n        for (String id : cardList) {\n            super.baseMapper.deleteById(id);\n        }\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/CardTypeImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.CardTypeMapper;\nimport com.orange.verify.api.bean.CardType;\nimport com.orange.verify.api.service.CardTypeService;\nimport com.orange.verify.api.vo.CardTypeVo;\n\n@Service\npublic class CardTypeImpl extends ServiceImpl<CardTypeMapper, CardType> implements CardTypeService {\n\n\n    @Override\n    public Page<CardTypeVo> page(CardType cardType, Page page) {\n\n        return page.setRecords(super.baseMapper.page(cardType,page));\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/EmailAccountImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.EmailAccountMapper;\nimport com.orange.verify.api.bean.EmailAccount;\nimport com.orange.verify.api.service.EmailAccountService;\n\nimport java.util.List;\n\n@Service\npublic class EmailAccountImpl extends ServiceImpl<EmailAccountMapper, EmailAccount> implements EmailAccountService {\n\n    @Override\n    public List<EmailAccount> getList() {\n\n        QueryWrapper<EmailAccount> createDate = new QueryWrapper<EmailAccount>().orderByDesc(\n                \"create_date\");\n        List<EmailAccount> emailAccounts = super.baseMapper.selectList(createDate);\n\n        return emailAccounts;\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/InterfaceManagementImpl.java",
    "content": "package com.orange.verify.admin.impl;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Service;\r\nimport com.orange.verify.api.bean.InterfaceManagement;\r\nimport com.orange.verify.api.service.InterfaceManagementService;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.data.redis.core.RedisTemplate;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Set;\r\n\r\n@Service\r\npublic class InterfaceManagementImpl implements InterfaceManagementService {\r\n\r\n    @Autowired\r\n    private RedisTemplate<String,Object> template;\r\n\r\n    private static final String PREFIX = \"orange.verify:open.interface:\";\r\n\r\n    @Override\r\n    public List<InterfaceManagement> getAll() throws Exception {\r\n\r\n        List<InterfaceManagement> interfaceManagements = new ArrayList<>();\r\n\r\n        Set<String> keys = template.keys(PREFIX + \"*\");\r\n        for (String key : keys) {\r\n\r\n            InterfaceManagement interfaceManagement = (InterfaceManagement) template.opsForValue().get(key);\r\n            interfaceManagements.add(interfaceManagement);\r\n        }\r\n\r\n        return interfaceManagements;\r\n    }\r\n\r\n    @Override\r\n    public void closeInterface(String key,Integer on) throws Exception {\r\n\r\n        InterfaceManagement interfaceManagementRedis = (InterfaceManagement) template.opsForValue().get(key);\r\n\r\n        interfaceManagementRedis.setVisit(on);\r\n\r\n        template.opsForValue().set(key,interfaceManagementRedis);\r\n    }\r\n\r\n    @Override\r\n    public InterfaceManagement getSingle(String key) throws Exception {\r\n\r\n        return (InterfaceManagement) template.opsForValue().get(key);\r\n    }\r\n\r\n    @Override\r\n    public void update(InterfaceManagement interfaceManagement) throws Exception {\r\n\r\n        InterfaceManagement interfaceManagementRedis = (InterfaceManagement) template.opsForValue().get(interfaceManagement.getKey());\r\n\r\n        interfaceManagementRedis.setIpVisits(interfaceManagement.getIpVisits());\r\n        interfaceManagementRedis.setIpRedisInterval(interfaceManagement.getIpRedisInterval());\r\n\r\n        template.opsForValue().set(interfaceManagement.getKey(),interfaceManagementRedis);\r\n    }\r\n\r\n    @Override\r\n    public void ipHandle(String key,Integer on) throws Exception {\r\n\r\n        InterfaceManagement interfaceManagementRedis = (InterfaceManagement) template.opsForValue().get(key);\r\n\r\n        interfaceManagementRedis.setIpHandle(on);\r\n\r\n        template.opsForValue().set(key,interfaceManagementRedis);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/SoftImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.SoftMapper;\nimport com.orange.verify.admin.transition.Transition;\nimport com.orange.verify.api.bean.Soft;\nimport com.orange.verify.api.sc.SoftServiceStatus;\nimport com.orange.verify.api.sr.ServiceResult;\nimport com.orange.verify.api.service.SoftService;\nimport com.orange.verify.api.sr.SoftImplGetSoftDescEnum;\nimport com.orange.verify.api.vo.SoftVo;\nimport com.orange.verify.api.vo.open.SoftGetSoftDescVo;\nimport org.springframework.beans.factory.annotation.Autowired;\n\n@Service\npublic class SoftImpl extends ServiceImpl<SoftMapper, Soft> implements SoftService {\n\n    @Autowired\n    private Transition transition;\n\n    @Override\n    public Page<SoftVo> page(Soft soft, Page page) {\n        return page.setRecords(baseMapper.page(soft,page));\n    }\n\n    @Override\n    public ServiceResult<SoftGetSoftDescVo> getSoftDesc(SoftGetSoftDescVo accountGetSoftDescVo) {\n\n        ServiceResult<SoftGetSoftDescVo> result = new ServiceResult<>();\n\n        Soft soft = super.baseMapper.selectById(accountGetSoftDescVo.getSoftId());\n        //软件不存在直接返回\n        if (soft == null) {\n            result.setCode(SoftImplGetSoftDescEnum.SOFT_EMPTY);\n            return result;\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\n            result.setCode(SoftImplGetSoftDescEnum.SOFT_CLOSE);\n            result.setMsg(soft.getServiceCloseMsg());\n            return result;\n        }\n\n        SoftGetSoftDescVo softGetSoftDescVo = transition.toVo(soft);\n        result.setCode(SoftImplGetSoftDescEnum.SUCCESS);\n        result.setData(softGetSoftDescVo);\n\n        return result;\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/SoftLeaveMessageImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.config.RabbitMqConfig;\nimport com.orange.verify.admin.mapper.EmailAccountMapper;\nimport com.orange.verify.admin.mapper.SoftLeaveMessageMapper;\nimport com.orange.verify.admin.mapper.SoftMapper;\nimport com.orange.verify.admin.rabbitmq.bean.LeaveMessage;\nimport com.orange.verify.admin.service.BaiduMapApiServiceL;\nimport com.orange.verify.admin.transition.Transition;\nimport com.orange.verify.api.bean.EmailAccount;\nimport com.orange.verify.api.bean.Soft;\nimport com.orange.verify.api.bean.SoftLeaveMessage;\nimport com.orange.verify.api.sc.SoftServiceStatus;\nimport com.orange.verify.api.sr.ServiceResult;\nimport com.orange.verify.api.service.SoftLeaveMessageService;\nimport com.orange.verify.api.sr.SoftLeaveMessageImplCreateEnum;\nimport com.orange.verify.api.vo.SoftLeaveMessageVo;\nimport com.orange.verify.api.vo.open.SoftLeaveMeesageSubmitVo;\nimport org.springframework.amqp.core.AmqpTemplate;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.transaction.annotation.Transactional;\n\n@Service\npublic class SoftLeaveMessageImpl extends ServiceImpl<SoftLeaveMessageMapper, SoftLeaveMessage> implements SoftLeaveMessageService {\n\n    @Autowired\n    private EmailAccountMapper emailAccountMapper;\n\n    @Autowired\n    private SoftMapper softMapper;\n\n    @Autowired\n    private BaiduMapApiServiceL baiduMapApiServiceL;\n\n    @Autowired\n    private Transition transition;\n\n    @Autowired\n    private AmqpTemplate amqpTemplate;\n\n    @Override\n    public Page<SoftLeaveMessageVo> page(SoftLeaveMessageVo softLeaveMessageVo, Page page) {\n\n        return page.setRecords(super.baseMapper.page(softLeaveMessageVo,page));\n    }\n\n    @Override\n    @Transactional(rollbackFor = Exception.class)\n    public ServiceResult create(SoftLeaveMeesageSubmitVo softLeaveMeesageSubmitVo) {\n\n        ServiceResult result = new ServiceResult<>();\n\n        Soft soft = softMapper.selectById(softLeaveMeesageSubmitVo.getSoftId());\n        if (soft == null) {\n            result.setCode(SoftLeaveMessageImplCreateEnum.SOFT_EMPTY);\n            return result;\n        } else if (soft.getServiceStatus() == SoftServiceStatus.CLOSE.getStatusCode()) {\n            result.setCode(SoftLeaveMessageImplCreateEnum.SOFT_CLOSE);\n            result.setMsg(soft.getServiceCloseMsg());\n            return result;\n        }\n\n        //查询ip信息\n        String addressByIp = \"\";\n        try {\n            addressByIp = baiduMapApiServiceL.getIpInfo(softLeaveMeesageSubmitVo.getIp());\n        } catch (Exception e) {\n            result.setCode(SoftLeaveMessageImplCreateEnum.BAIDU_API_ERROR);\n            return result;\n        }\n\n        SoftLeaveMessage softLeaveMessage = transition.fromVo(softLeaveMeesageSubmitVo);\n        softLeaveMessage.setIpInfo(addressByIp);\n\n        int insert = super.baseMapper.insert(softLeaveMessage);\n        if (insert > 0) {\n            if (soft.getEmailNotificatio() == 0) {\n                EmailAccount emailAccount = emailAccountMapper.get();\n                LeaveMessage leaveMessage = new LeaveMessage();\n                leaveMessage.setTitle(\"Orange Verify :接收到一条留言，请查看！\");\n                leaveMessage.setContent(\"软件名: \" + soft.getName() + \"\\n\\nQQ号: \" + softLeaveMeesageSubmitVo.getQq() +\n                        \" 给您留言了 \\n\\n留言内容: \" + softLeaveMeesageSubmitVo.getContent() +\n                        \"\\n\\nIP: \" + softLeaveMeesageSubmitVo.getIp() + \"\\n\\nIpInfo: \" + addressByIp);\n                leaveMessage.setReceiveAccount(soft.getEmailName());\n                leaveMessage.setSendAccount(emailAccount.getUsername());\n                leaveMessage.setSendPassword(emailAccount.getPassword());\n                amqpTemplate.convertAndSend(RabbitMqConfig.EMAIL_SEND_CODE,leaveMessage);\n                emailAccountMapper.use(emailAccount.getId());\n            }\n            result.setCode(SoftLeaveMessageImplCreateEnum.LEAVE_MESSAGE_SEND_SUCCESS);\n            return result;\n        }\n\n        result.setCode(SoftLeaveMessageImplCreateEnum.LEAVE_MESSAGE_SEND_ERROR);\n        return result;\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/SoftVersionsImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.SoftMapper;\nimport com.orange.verify.admin.mapper.SoftVersionsMapper;\nimport com.orange.verify.api.bean.Soft;\nimport com.orange.verify.api.bean.SoftVersions;\nimport com.orange.verify.api.service.SoftVersionsService;\nimport com.orange.verify.api.vo.SoftVersionsVo;\nimport org.springframework.beans.factory.annotation.Autowired;\n\n@Service\npublic class SoftVersionsImpl extends ServiceImpl<SoftVersionsMapper, SoftVersions> implements SoftVersionsService {\n\n    @Autowired\n    private SoftMapper softMapper;\n\n    @Override\n    public SoftVersionsVo getSingleBySoftId(String softId) {\n\n        return super.baseMapper.getSingleBySoftId(softId);\n    }\n\n    @Override\n    public boolean saveLogic(SoftVersions softVersions) {\n\n        //去取软件是否存在\n        Soft soft = softMapper.selectById(softVersions.getSoftId());\n        if (soft == null) {\n            return false;\n        }\n\n        // 去取软件id有没有在版本表里面\n        // 有 >>> 新增失败 没有 >>> 做新增\n        int count = super.count(new QueryWrapper<SoftVersions>().eq(\"soft_id\",softVersions.getSoftId()));\n        if (count > 0) {\n            return false;\n        }\n\n        return super.save(softVersions);\n    }\n\n    @Override\n    public com.orange.verify.api.vo.open.SoftVersionsVo getVersions(String softId) {\n\n        return super.baseMapper.getVersions(softId);\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/impl/UserImpl.java",
    "content": "package com.orange.verify.admin.impl;\n\nimport com.alibaba.dubbo.config.annotation.Service;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.orange.verify.admin.mapper.UserMapper;\nimport com.orange.verify.api.bean.User;\nimport com.orange.verify.api.service.UserService;\n\n@Service\npublic class UserImpl extends ServiceImpl<UserMapper, User> implements UserService {\n\n    @Override\n    public int verifyUser(String username, String password) {\n\n        return super.baseMapper.verifyUser(username,password);\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/AccountLoginLogMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.AccountLoginLog;\nimport com.orange.verify.api.vo.AccountLoginLogVo;\nimport org.apache.ibatis.annotations.Delete;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface AccountLoginLogMapper extends BaseMapper<AccountLoginLog> {\n\n    @Select(\"<script>\" +\n            \"SELECT FROM_UNIXTIME(ROUND(create_date / 1000)) AS TIME FROM t_account_login_log \" +\n            \"WHERE \" +\n            \"<![CDATA[ TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(create_date/1000)) >= 0 \" +\n            \"AND \" +\n            \"TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(create_date/1000)) <= 7 ]]>\" +\n            \"<if test=\\\"softId != null and softId != ''\\\"> and soft_id = #{softId} </if>\" +\n            \"ORDER BY create_date ASC\" +\n            \"</script>\")\n    List<String> getBeforeData(@Param(\"softId\") String softId);\n\n    @Delete(\"delete from t_account_login_log\\n\" +\n            \"where TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(create_date/1000)) >= 10\\n\" +\n            \"limit 100\")\n    int deleteLog();\n\n    @Select(\"<script>\" +\n            \"select tall.*,\" +\n            \"(SELECT s.name FROM t_soft s WHERE s.id = tall.soft_id) as soft_name,\" +\n            \"(SELECT a.username FROM t_account a WHERE a.id = tall.account_id) as account_name \" +\n            \"from t_account_login_log tall \" +\n            \"<where>\" +\n            \"<if test=\\\"accountLoginLog.softId != null and accountLoginLog.softId != ''\\\">\" +\n            \" and tall.soft_id = #{accountLoginLog.softId} \" +\n            \"</if>\" +\n            \"</where>\" +\n            \"ORDER BY create_date desc\" +\n            \"</script>\")\n    List<AccountLoginLogVo> page(@Param(\"accountLoginLog\") AccountLoginLogVo accountLoginLog, Page page);\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/AccountMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.Account;\nimport com.orange.verify.api.vo.AccountVo;\nimport com.orange.verify.api.vo.open.AccountUpdatePasswordVo;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\nimport org.apache.ibatis.annotations.Update;\n\nimport java.util.List;\n\npublic interface AccountMapper extends BaseMapper<Account> {\n\n    @Select(\"<script>\" +\n            \"SELECT a.*,s.name as soft_name FROM t_account a \" +\n            \"LEFT JOIN t_soft s \" +\n            \"ON a.soft_id = s.id \" +\n            \"where a.del_flag = 0 \" +\n            \"<if test=\\\"accountVo.softId != null and accountVo.softId != ''\\\"> and a.soft_id = #{accountVo.softId} </if>\" +\n            \"<if test=\\\"accountVo.createIp != null and accountVo.createIp != ''\\\"> and a.create_ip = #{accountVo.createIp} </if>\" +\n            \"<if test=\\\"accountVo.username != null and accountVo.username != ''\\\"> and a.username like concat('%',#{accountVo.username},'%') </if>\" +\n            \"order by create_date desc\" +\n            \"</script>\")\n    List<AccountVo> page(@Param(\"accountVo\") AccountVo accountVo, Page page);\n\n    @Update(\"update t_account set password = #{password} where \" +\n            \"soft_id = #{softId} and \" +\n            \"username = #{username} and \" +\n            \"security_code = #{securityCode}\")\n    int updatePassword(AccountUpdatePasswordVo accountUpdatePasswordVo);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/AccountRegisterLogMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.AccountRegisterLog;\nimport com.orange.verify.api.vo.AccountRegisterLogVo;\nimport org.apache.ibatis.annotations.Delete;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface AccountRegisterLogMapper extends BaseMapper<AccountRegisterLog> {\n\n    //找出以往7天到现在的数据\n    @Select(\"<script>\" +\n            \"SELECT FROM_UNIXTIME(ROUND(create_date / 1000)) AS TIME FROM t_account_register_log \" +\n            \"WHERE \" +\n            \"<![CDATA[ TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(create_date/1000)) >= 0 \" +\n            \"AND \" +\n            \"TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(create_date/1000)) <= 7 ]]> \" +\n            \"<if test=\\\"softId != null and softId != ''\\\"> and soft_id = #{softId} </if>\" +\n            \"ORDER BY create_date ASC \" +\n            \"</script>\")\n    List<String> getBeforeData(@Param(\"softId\") String softId);\n\n    @Delete(\"delete from t_account_register_log\\n\" +\n            \"where TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(create_date/1000)) >= 10\\n\" +\n            \"limit 100\")\n    int deleteLog();\n\n    @Select(\"<script>\" +\n            \"select tall.*,\" +\n            \"(SELECT s.name FROM t_soft s WHERE s.id = tall.soft_id) as soft_name,\" +\n            \"(SELECT a.username FROM t_account a WHERE a.id = tall.account_id) as account_name \" +\n            \"from t_account_register_log tall \" +\n            \"<where>\" +\n            \"<if test=\\\"accountRegisterLog.softId != null and accountRegisterLog.softId != ''\\\">\" +\n            \" and tall.soft_id = #{accountRegisterLog.softId} \" +\n            \"</if>\" +\n            \"</where>\" +\n            \"ORDER BY create_date desc\" +\n            \"</script>\")\n    List<AccountRegisterLogVo> page(\n            @Param(\"accountRegisterLog\") AccountRegisterLog accountRegisterLog, Page page);\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/BaiduMapApiMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.orange.verify.api.bean.BaiduMapApi;\nimport org.apache.ibatis.annotations.Select;\n\npublic interface BaiduMapApiMapper extends BaseMapper<BaiduMapApi> {\n\n    @Select(\"select count(*) from t_baidu_map_api\")\n    int getBaiduMapApiCount();\n\n    @Select(\"select * from t_baidu_map_api limit 1\")\n    BaiduMapApi getSingle();\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/CardMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.Card;\nimport com.orange.verify.api.vo.CardVo;\nimport com.orange.verify.api.vo.open.CardTimeLimitVo;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface CardMapper extends BaseMapper<Card> {\n\n    @Select(\"<script>\" +\n            \"SELECT \" +\n            \"c.*,ct.unit as card_type_unit, \" +\n            \"ct.value as card_type_value,a.username as account_name, \" +\n            \"s.name as soft_name \" +\n            \"FROM t_card c \" +\n            \"LEFT JOIN t_card_type ct \" +\n            \"ON c.card_type_id = ct.id \" +\n            \"LEFT JOIN t_soft s \" +\n            \"ON ct.soft_id = s.id \" +\n            \"LEFT JOIN t_account a \" +\n            \"ON c.account_id = a.id \" +\n            \"where c.del_flag = 0 \" +\n            \"<if test=\\\"cardVo.softId != null and cardVo.softId != ''\\\"> and ct.soft_id = #{cardVo.softId} </if>\" +\n            \"<if test=\\\"cardVo.cardTypeUnit != null\\\"> and ct.unit = #{cardVo.cardTypeUnit} </if>\" +\n            \"<if test=\\\"cardVo.closure != null\\\"> and c.closure = #{cardVo.closure} </if>\" +\n            \"<if test=\\\"cardVo.useStatus != null\\\"> and c.use_status = #{cardVo.useStatus} </if>\" +\n            \"order by c.create_date desc\" +\n            \"</script>\")\n    List<CardVo> page(@Param(\"cardVo\") CardVo cardVo, Page page);\n\n    @Select(\"SELECT c.start_date,c.end_date FROM t_account a \" +\n            \"LEFT JOIN t_card c \" +\n            \"ON a.card_id = c.id \" +\n            \"WHERE c.del_flag = 0 AND a.del_flag = 0 \" +\n            \"AND a.username = #{username} AND a.password = #{password} AND a.soft_id = #{softId}\")\n    CardTimeLimitVo getCardTimeLimit(@Param(\"username\") String username,\n                                     @Param(\"password\") String password,\n                                     @Param(\"softId\") String softId);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/CardTypeMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.CardType;\nimport com.orange.verify.api.vo.CardTypeVo;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface CardTypeMapper extends BaseMapper<CardType> {\n\n    @Select(\"<script>\" +\n            \"select ct.*,(select name from t_soft where id = ct.soft_id) as soft_name from t_card_type ct \" +\n            \"where ct.del_flag = 0 \" +\n            \"<if test=\\\"cardType.softId != null and cardType.softId != ''\\\"> and ct.soft_id = #{cardType.softId} </if>\" +\n            \"order by ct.create_date desc\" +\n            \"</script>\")\n    List<CardTypeVo> page(@Param(\"cardType\") CardType cardType, Page page);\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/EmailAccountMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.orange.verify.api.bean.EmailAccount;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\nimport org.apache.ibatis.annotations.Update;\n\npublic interface EmailAccountMapper extends BaseMapper<EmailAccount> {\n\n    @Select(\"SELECT * FROM t_email_account where is_use = 0 and del_flag = 0 ORDER BY total ASC LIMIT 0,1\")\n    EmailAccount get();\n\n    @Update(\"UPDATE t_email_account SET total = total+1 WHERE id = #{id}\")\n    int use(@Param(\"id\") String id);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/SoftLeaveMessageMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.SoftLeaveMessage;\nimport com.orange.verify.api.vo.SoftLeaveMessageVo;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface SoftLeaveMessageMapper extends BaseMapper<SoftLeaveMessage> {\n\n    @Select(\"<script>\" +\n            \"select slm.*,s.name as soft_name from t_soft_leave_message slm \" +\n            \"left join t_soft s \" +\n            \"on slm.soft_id = s.id \" +\n            \"where slm.del_flag = 0 \" +\n            \"<if test=\\\"softLeaveMessageVo.softId != null and softLeaveMessageVo.softId != ''\\\"> and slm.soft_id = #{softLeaveMessageVo.softId} </if>\" +\n            \"order by slm.create_date desc\" +\n            \"</script>\")\n    List<SoftLeaveMessageVo> page(@Param(\"softLeaveMessageVo\") SoftLeaveMessageVo softLeaveMessageVo, Page page);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/SoftMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.orange.verify.api.bean.Soft;\nimport com.orange.verify.api.vo.SoftVo;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface SoftMapper extends BaseMapper<Soft> {\n\n    @Select(\"<script>\" +\n            \"SELECT \" +\n            \"s.*, \" +\n            \"(SELECT count(*) FROM t_account a where a.soft_id = s.id and a.del_flag=0 ) as account_total, \" +\n            \"(SELECT sv.number FROM t_soft_versions sv WHERE sv.soft_id = s.id) as versions_num, \" +\n            \"(SELECT count(*) FROM t_soft_leave_message slm WHERE slm.soft_id = s.id and slm.del_flag=0) as leave_message_num \" +\n            \"FROM \" +\n            \"t_soft s \" +\n            \"where s.del_flag = 0 \" +\n            \"<if test=\\\"soft.name != null and soft.name != ''\\\"> and s.name like concat('%',#{soft.name},'%') </if>\" +\n            \"order by s.create_date desc\" +\n            \"</script>\")\n    List<SoftVo> page(@Param(\"soft\") Soft soft,Page page);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/SoftVersionsMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.orange.verify.api.bean.SoftVersions;\nimport com.orange.verify.api.vo.SoftVersionsVo;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\npublic interface SoftVersionsMapper extends BaseMapper<SoftVersions> {\n\n    @Select(\"SELECT sv.*,(SELECT s.name FROM t_soft s WHERE s.id = sv.soft_id) as soft_name \" +\n            \"FROM t_soft_versions sv \" +\n            \"where sv.del_flag = 0 and sv.soft_id = #{softId}\")\n    SoftVersionsVo getSingleBySoftId(@Param(\"softId\") String softId);\n\n    @Select(\"select number,novatio_necessaria,notice,update_url from t_soft_versions where soft_id = #{softId}\")\n    com.orange.verify.api.vo.open.SoftVersionsVo getVersions(@Param(\"softId\") String softId);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/mapper/UserMapper.java",
    "content": "package com.orange.verify.admin.mapper;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.orange.verify.api.bean.User;\nimport org.apache.ibatis.annotations.Param;\nimport org.apache.ibatis.annotations.Select;\n\nimport java.util.List;\n\npublic interface UserMapper extends BaseMapper<User> {\n\n    @Select(\"select count(*) from t_user where username = #{username} and password = #{password} and del_flag=0\")\n    int verifyUser(@Param(\"username\") String username,@Param(\"password\") String password);\n\n}"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/rabbitmq/EmailReceive.java",
    "content": "package com.orange.verify.admin.rabbitmq;\n\nimport com.orange.verify.admin.config.RabbitMqConfig;\nimport com.orange.verify.admin.rabbitmq.bean.LeaveMessage;\nimport com.orange.verify.common.email.MailUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.amqp.rabbit.annotation.RabbitListener;\nimport org.springframework.stereotype.Component;\n\nimport javax.mail.MessagingException;\nimport java.security.GeneralSecurityException;\n\n@Component\npublic class EmailReceive {\n\n    private static final Logger log = LoggerFactory.getLogger(EmailReceive.class);\n\n    @RabbitListener(queues = RabbitMqConfig.EMAIL_SEND_CODE)\n    public void sendCode(LeaveMessage leaveMessage) {\n\n        log.info(\"发送邮件啦~~\");\n\n        MailUtil mailUtil = new MailUtil(leaveMessage.getSendAccount(),\n                leaveMessage.getSendPassword());\n\n        try {\n            mailUtil.send(leaveMessage.getReceiveAccount(),leaveMessage.getTitle(),leaveMessage.getContent());\n            log.info(\"邮件发送成功\");\n        } catch (MessagingException e) {\n            log.error(\"邮件错误：\" + e.getMessage());\n        } catch (GeneralSecurityException e) {\n            log.error(\"邮件错误：\" + e.getMessage());\n        }\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/rabbitmq/bean/LeaveMessage.java",
    "content": "package com.orange.verify.admin.rabbitmq.bean;\n\nimport java.io.Serializable;\n\npublic class LeaveMessage implements Serializable {\n\n    private String sendAccount;\n\n    private String sendPassword;\n\n    private String title;\n\n    private String content;\n\n    private String receiveAccount;\n\n    public String getSendAccount() {\n        return sendAccount;\n    }\n\n    public void setSendAccount(String sendAccount) {\n        this.sendAccount = sendAccount;\n    }\n\n    public String getSendPassword() {\n        return sendPassword;\n    }\n\n    public void setSendPassword(String sendPassword) {\n        this.sendPassword = sendPassword;\n    }\n\n    public String getTitle() {\n        return title;\n    }\n\n    public void setTitle(String title) {\n        this.title = title;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n    public void setContent(String content) {\n        this.content = content;\n    }\n\n    public String getReceiveAccount() {\n        return receiveAccount;\n    }\n\n    public void setReceiveAccount(String receiveAccount) {\n        this.receiveAccount = receiveAccount;\n    }\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/scheduler/LogDeleteScheduler.java",
    "content": "package com.orange.verify.admin.scheduler;\n\nimport com.orange.verify.admin.mapper.AccountLoginLogMapper;\nimport com.orange.verify.admin.mapper.AccountRegisterLogMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.scheduling.annotation.Scheduled;\n\n/**\n * 定时执行删除登陆 注册日志 ，10天前的分段删除\n * 10天前的数据比如1万条，每次只删除100条\n */\n@Configuration\n@EnableScheduling\npublic class LogDeleteScheduler {\n\n    private static final Logger log = LoggerFactory.getLogger(LogDeleteScheduler.class);\n\n    @Autowired\n    private AccountLoginLogMapper accountLoginLogMapper;\n\n    @Autowired\n    private AccountRegisterLogMapper accountRegisterLogMapper;\n\n    @Scheduled(fixedRate = 3600000)\n    public void logDeleteTask() {\n\n        int accountLoginLog = accountLoginLogMapper.deleteLog();\n\n        int accountRegisterLog = accountRegisterLogMapper.deleteLog();\n\n        log.info(\"登陆日志(本次删除日志条数): \" + accountLoginLog);\n        log.info(\"注册日志(本次删除日志条数): \" + accountRegisterLog);\n\n    }\n\n}\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/service/BaiduMapApiServiceL.java",
    "content": "package com.orange.verify.admin.service;\r\n\r\nimport com.orange.verify.admin.mapper.BaiduMapApiMapper;\r\nimport com.orange.verify.api.bean.BaiduMapApi;\r\nimport com.orange.verify.common.ip.BaiduIp;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\n@Service\r\npublic class BaiduMapApiServiceL {\r\n\r\n    @Autowired\r\n    private BaiduMapApiMapper apiMapper;\r\n\r\n    public String getIpInfo(String ip) throws Exception {\r\n\r\n        if (\"127.0.0.1\".equals(ip)) {\r\n            return \"本地测试\";\r\n        }\r\n\r\n        try {\r\n\r\n            BaiduMapApi single = apiMapper.getSingle();\r\n\r\n            String ipInfo = BaiduIp.start(single.getAppkey())\r\n                    .getAddressByIp(ip);\r\n\r\n            return ipInfo;\r\n\r\n        } catch (Exception e) {\r\n            throw new Exception();\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin/src/main/java/com/orange/verify/admin/transition/Transition.java",
    "content": "package com.orange.verify.admin.transition;\n\nimport com.orange.verify.api.bean.Account;\nimport com.orange.verify.api.bean.InterfaceManagement;\nimport com.orange.verify.api.bean.Soft;\nimport com.orange.verify.api.bean.SoftLeaveMessage;\nimport com.orange.verify.api.vo.open.SoftGetSoftDescVo;\nimport com.orange.verify.api.vo.open.AccountRegisterVo;\nimport com.orange.verify.api.vo.open.SoftLeaveMeesageSubmitVo;\nimport org.mapstruct.Mapper;\nimport org.mapstruct.Mapping;\n\n@Mapper(componentModel = \"spring\")\npublic interface Transition {\n\n    @Mapping(target = \"createIp\",source = \"ip\")\n    Account fromVo(AccountRegisterVo accountRegisterVo);\n\n    SoftLeaveMessage fromVo(SoftLeaveMeesageSubmitVo softLeaveMeesageSubmitVo);\n\n    SoftGetSoftDescVo toVo(Soft soft);\n\n}\n"
  },
  {
    "path": "admin/src/main/resources/application.properties",
    "content": "\r\nserver.port=8077\r\n\r\ndubbo.application.name = com-orange-verify-server\r\n\r\ndubbo.scan.basePackages  = com.orange.verify\r\n\r\ndubbo.provider.timeout = 10000\r\ndubbo.provider.retries= 0\r\n\r\ndubbo.protocol.port=8078\r\ndubbo.registry.id = com-orange-verify\r\ndubbo.registry.address = zookeeper://localhost:2181?client=curator\r\n\r\ndubbo.application.qosEnable=false\r\n\r\nlogging.config=classpath:logback-spring.xml\r\n\r\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\r\nspring.datasource.url=jdbc:mysql://localhost:3306/com_orange_verify_db?useUnicode=true&characterEncoding=utf-8&useSSL=false\r\nspring.datasource.username=root\r\nspring.datasource.password=root\r\nspring.datasource.type=com.zaxxer.hikari.HikariDataSource\r\nspring.datasource.hikari.connection-timeout=30000\r\nspring.datasource.hikari.idle-timeout=600000\r\nspring.datasource.hikari.max-lifetime=1765000\r\nspring.datasource.hikari.maximum-pool-size=15\r\nspring.datasource.hikari.minimum-idle=10\r\nspring.datasource.hikari.connection-test-query=SELECT 1\r\nspring.jpa.properties.hibernate.hbm2ddl.auto=update\r\nspring.jpa.properties.hibernate.show_sql=true\r\nspring.datasource.hikari.connection-init-sql=SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')\r\n\r\nmybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl\r\n\r\nspring.redis.host=localhost\r\nspring.redis.port=6379\r\nspring.redis.password=\r\nspring.redis.expire=1800\r\nspring.redis.timeout=5000\r\nspring.redis.database=0  \r\nspring.redis.pool.max.active=8  \r\nspring.redis.pool.max.wait=-1  \r\nspring.redis.pool.max.idle=8  \r\nspring.redis.pool.min.idle=0  \r\n\r\n"
  },
  {
    "path": "admin/src/main/resources/logback-spring.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<configuration scan=\"true\" scanPeriod=\"60 seconds\" debug=\"false\">\n    <contextName>logback</contextName>\n\n    <appender name=\"console\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <appender name=\"file\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <File>log/admin.log</File>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>log/admin.%d.log</fileNamePattern>\n            <maxHistory>20</maxHistory>\n        </rollingPolicy>\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <root level=\"info\">\n        <appender-ref ref=\"console\" />\n        <appender-ref ref=\"file\" />\n    </root>\n\n    <logger name=\"com.orange.verify.admin\" level=\"debug\"/>\n\n</configuration>"
  },
  {
    "path": "admin/src/test/java/com/orange/verify/admin/AdminApplicationTests.java",
    "content": "package com.orange.verify.admin;\n\nimport cn.hutool.core.util.CharsetUtil;\nimport cn.hutool.core.util.HexUtil;\nimport cn.hutool.core.util.StrUtil;\nimport cn.hutool.crypto.asymmetric.KeyType;\nimport cn.hutool.crypto.asymmetric.RSA;\nimport com.orange.verify.api.bean.Account;\nimport com.orange.verify.api.bean.Card;\nimport lombok.extern.java.Log;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.test.context.junit4.SpringRunner;\n\n@RunWith(SpringRunner.class)\n@SpringBootTest\n@Log\npublic class AdminApplicationTests {\n\n    @Autowired\n    private RedisTemplate<String,Object> redisTemplate;\n\n    @Test\n    public void contextLoads() {\n\n    }\n\n}\n"
  },
  {
    "path": "admin/src/test/java/com/orange/verify/admin/RsaTest.java",
    "content": "package com.orange.verify.admin;\n\nimport com.orange.verify.common.rsa.RsaUtil;\n\npublic class RsaTest {\n\n    public static void main(String[] args) throws Exception {\n\n        String decodeRsa = RsaUtil.decodeRsa(\"MvH9KjTo0vF+Su5X0sDi9QMwAnJI9oKYxYC/0DkZWtUqRFUfW5pESytoZGwelehIQefsfAGLAg/KaOC882VET4klE97VVo7EV3myGP8ble7a86nxSsPKN8rJjJYFszoHnRcxa7HymbS0be27uZciYD0TcFO7kVaDwIzwxlURQZM=\",\n                \"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAImJvnLEXlUNK6\" +\n                \"mWifAKX61PEfE6eQpXTx+sxuvUKcVlRdeximysbdVEwlH5sS1hLjn5nTXeTD\" +\n                        \"+Hh05qtWOQ5Qxhxv6WOuoT\" +\n                \"DsxuLAkVhwzeShiVOB4abBFugNvQD1kWq6SZNPqISLR4+qnvDjLsAVchAgEEkDAS\" +\n                        \"/zP9vgVvyksXAgMBAAECgYBIZG8\" +\n                \"Qu1knjTIhJjJeXSd08jxwayWQktn7wxZExLxjwOVdHX7Nqoh5C6L4QOPIDfGl5EOiOeqKOcy3MqVczcQw0xANn4xexFw\" +\n                \"RP6WzF5uqVUzdB7OSKJohO46pcM8D81gouwG8bn8oXpHtAzhqjtay9Nc3M66KO\" +\n                        \"+BqkWp4HdeM2QJBANzh6JFog+ScURp0\" +\n                \"hDkC16D0NkJCejIFbTqxErOt4RChd1Bp4IcKOXReICm43kOBLbVdKpr2D3E8S00D9G3awasCQQCfZ6cFOueLlii+gr17\" +\n                \"78QpFqqbkNJyJ3jTqy0O7gno\" +\n                        \"/eEO6whPg0j2gjmgXUQKNVsf8ddgx6xKnWfOAuGEFEhFAkANhLoCJD5mQHbqQpVRE+50i\" +\n                \"F3FwmHOK+zaebnmS08KAIfX4RL\" +\n                        \"/0M1hZN1dEFZyFTbh8bjI0SRyzrjhFsvf6VKPAkA7UFRjq9FwrUUn7noXXdY9+8Mr8\" +\n                \"6168JkTGgTAI27olV9jL619+Lnzj+1lcI7axZPMxS6BQosnkH6Jt6S2gt2JAkBsAlo5rC\" +\n                \"zv/h6HtfzsmUuk9P9t+LLNu0ZK9O0ftorH9lMbGncqNlhbyRPFJ9UaFumfmShLzKxdeAKFYRhoA2Yv\");\n\n        System.out.println(decodeRsa);\n\n\n    }\n\n}\n"
  },
  {
    "path": "admin/src/test/java/com/orange/verify/admin/TimeTest.java",
    "content": "package com.orange.verify.admin;\n\nimport cn.hutool.core.date.DateTime;\nimport cn.hutool.core.date.DateUtil;\n\nimport java.util.Date;\n\npublic class TimeTest {\n\n    public static void main(String[] args) {\n\n        long a = 1545910903611L;\n\n        long totalTime = (System.currentTimeMillis() - a);\n\n        System.out.println(totalTime);\n\n    }\n\n}\n"
  },
  {
    "path": "admin-web/.gitignore",
    "content": "/target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n.sts4-cache\n\n### IntelliJ IDEA ###\n.idea\n*.iws\n*.iml\n*.ipr\n\n### NetBeans ###\n/nbproject/private/\n/build/\n/nbbuild/\n/dist/\n/nbdist/\n/.nb-gradle/"
  },
  {
    "path": "admin-web/.mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip\n"
  },
  {
    "path": "admin-web/log/adminweb.log",
    "content": "22:40:26.853 logback [main] INFO  c.a.d.common.logger.LoggerFactory - using logger: com.alibaba.dubbo.common.logger.slf4j.Slf4jLoggerAdapter\n22:40:26.855 logback [main] INFO  c.a.b.d.c.e.WelcomeLogoApplicationListener - \n\n :: Dubbo Spring Boot (v0.2.0) : https://github.com/apache/incubator-dubbo-spring-boot-project\n :: Dubbo (v2.6.2) : https://github.com/apache/incubator-dubbo\n :: Google group : dev@dubbo.incubator.apache.org\n\n22:40:26.866 logback [main] INFO  c.a.b.d.c.e.OverrideDubboConfigApplicationListener - Dubbo Config was overridden by externalized configuration {dubbo.application.name=com-orange-verify-client, dubbo.application.qosEnable=false, dubbo.consumer.retries=0, dubbo.consumer.timeout=10000, dubbo.protocol.port=8039, dubbo.registry.address=zookeeper://localhost:2181?client=curator, dubbo.registry.id=com-orange-verify}\n22:40:26.974 logback [main] INFO  c.o.v.a.AdminWebApplicationTests - Starting AdminWebApplicationTests on DESKTOP-K8BN3NL with PID 22068 (started by 10673 in E:\\project\\java\\orange\\verifymaster\\admin-web)\n22:40:26.975 logback [main] DEBUG c.o.v.a.AdminWebApplicationTests - Running with Spring Boot v2.0.6.RELEASE, Spring v5.0.10.RELEASE\n22:40:26.981 logback [main] INFO  c.o.v.a.AdminWebApplicationTests - No active profile set, falling back to default profiles: default\n22:40:27.096 logback [main] INFO  o.s.w.c.s.GenericWebApplicationContext - Refreshing org.springframework.web.context.support.GenericWebApplicationContext@3cfdd820: startup date [Thu Jan 17 22:40:27 CST 2019]; root of context hierarchy\n22:40:28.060 logback [main] INFO  o.s.b.f.s.DefaultListableBeanFactory - Overriding bean definition for bean 'customRealm' with a different definition: replacing [Generic bean: class [com.orange.verify.adminweb.realm.CustomRealm]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [E:\\project\\java\\orange\\verifymaster\\admin-web\\target\\classes\\com\\orange\\verify\\adminweb\\realm\\CustomRealm.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=shiroConfig; factoryMethodName=customRealm; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/orange/verify/adminweb/config/ShiroConfig.class]]\n22:40:28.266 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ApplicationConfig#0, class : com.alibaba.dubbo.config.ApplicationConfig] has been registered.\n22:40:28.269 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ApplicationConfig#0] has been registered.\n22:40:28.271 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com-orange-verify, class : com.alibaba.dubbo.config.RegistryConfig] has been registered.\n22:40:28.271 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com-orange-verify] has been registered.\n22:40:28.273 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ProtocolConfig#0, class : com.alibaba.dubbo.config.ProtocolConfig] has been registered.\n22:40:28.274 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ProtocolConfig#0] has been registered.\n22:40:28.274 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ConsumerConfig#0, class : com.alibaba.dubbo.config.ConsumerConfig] has been registered.\n22:40:28.274 logback [main] INFO  c.a.d.c.s.c.a.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ConsumerConfig#0] has been registered.\n22:40:28.342 logback [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!\n22:40:28.867 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.alibaba.boot.dubbo.autoconfigure.DubboAutoConfiguration' of type [com.alibaba.boot.dubbo.autoconfigure.DubboAutoConfiguration$$EnhancerBySpringCGLIB$$87d56b78] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:28.951 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'shiroConfig' of type [com.orange.verify.adminweb.config.ShiroConfig$$EnhancerBySpringCGLIB$$874aaf79] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:31.509 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.alibaba.dubbo.config.ConsumerConfig#0' of type [com.alibaba.dubbo.config.ConsumerConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:31.519 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.alibaba.dubbo.config.ApplicationConfig#0' of type [com.alibaba.dubbo.config.ApplicationConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:31.524 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com-orange-verify' of type [com.alibaba.dubbo.config.RegistryConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:33.960 logback [main] INFO  com.alibaba.dubbo.qos.server.Server -  [DUBBO] qos-server bind localhost:22222, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:33.976 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Load registry store file C:\\Users\\10673\\.dubbo\\dubbo-registry-com-orange-verify-client-localhost:2181.cache, data: {com.orange.verify.api.service.AccountLoginLogService=empty://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490433 empty://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490433 dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountLoginLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982732, com.orange.verify.api.service.InterfaceManagementService=empty://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=17720&side=consumer&timestamp=1547733490720 empty://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=17720&side=consumer&timestamp=1547733490720 dubbo://169.254.195.210:8078/com.orange.verify.api.service.InterfaceManagementService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=17540&side=provider&timestamp=1547733982875, com.orange.verify.api.service.BaiduMapApiService=empty://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490523 empty://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490523 dubbo://169.254.195.210:8078/com.orange.verify.api.service.BaiduMapApiService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982786, com.orange.verify.api.service.UserService=empty://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733477198 empty://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733477198 dubbo://169.254.195.210:8078/com.orange.verify.api.service.UserService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982988, com.orange.verify.api.service.SoftService=empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=17720&side=consumer&timestamp=1547733490754 empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=17720&side=consumer&timestamp=1547733490754 dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=17540&side=provider&timestamp=1547733982907, com.orange.verify.api.service.SoftVersionsService=empty://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490834 empty://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490834 dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftVersionsService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982971, com.orange.verify.api.service.CardTypeService=empty://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490624 empty://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490624 dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardTypeService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982838, com.orange.verify.api.service.SoftService:1.0.0=empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=5000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=7660&qos.enable=false&revision=1.0.0&side=consumer&timestamp=1544550079494&version=1.0.0 empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=5000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=7660&qos.enable=false&revision=1.0.0&side=consumer&timestamp=1544550079494&version=1.0.0 empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=5000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=7660&qos.enable=false&revision=1.0.0&side=consumer&timestamp=1544550079494&version=1.0.0, com.orange.verify.api.service.AccountRegisterLogService=empty://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490482 empty://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490482 dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountRegisterLogService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982759, com.orange.verify.api.service.CardService=empty://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=17720&side=consumer&timestamp=1547733490570 empty://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=17720&side=consumer&timestamp=1547733490570 dubbo://169.254.195.210:8078/com.orange.verify.api.service.CardService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=17540&side=provider&timestamp=1547733982811, com.orange.verify.api.service.EmailAccountService=empty://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490675 empty://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490675 dubbo://169.254.195.210:8078/com.orange.verify.api.service.EmailAccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982855, com.orange.verify.api.service.AccountService=empty://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=17720&side=consumer&timestamp=1547733490350 empty://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=17720&side=consumer&timestamp=1547733490350 dubbo://169.254.195.210:8078/com.orange.verify.api.service.AccountService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=17540&side=provider&timestamp=1547733982404, com.orange.verify.api.service.SoftLeaveMessageService=empty://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490792 empty://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17720&side=consumer&timestamp=1547733490792 dubbo://169.254.195.210:8078/com.orange.verify.api.service.SoftLeaveMessageService?anyhost=true&application=com-orange-verify-server&default.retries=0&default.timeout=10000&dubbo=2.6.2&generic=false&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=17540&side=provider&timestamp=1547733982954}, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:34.093 logback [main] INFO  o.a.c.f.imps.CuratorFrameworkImpl - Starting\n22:40:43.122 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT\n22:40:43.122 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:host.name=DESKTOP-K8BN3NL\n22:40:43.122 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.version=1.8.0_161\n22:40:43.122 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.vendor=Oracle Corporation\n22:40:43.122 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.home=D:\\work\\jdk\\jdk1.8\\jdk\\jre\n22:40:43.122 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.class.path=E:\\project\\java\\orange\\verifymaster\\admin-web\\target\\test-classes;E:\\project\\java\\orange\\verifymaster\\admin-web\\target\\classes;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-web\\2.0.6.RELEASE\\spring-boot-starter-web-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter\\2.0.6.RELEASE\\spring-boot-starter-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot\\2.0.6.RELEASE\\spring-boot-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-autoconfigure\\2.0.6.RELEASE\\spring-boot-autoconfigure-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-logging\\2.0.6.RELEASE\\spring-boot-starter-logging-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\ch\\qos\\logback\\logback-classic\\1.2.3\\logback-classic-1.2.3.jar;D:\\work\\maven\\m2\\repository\\ch\\qos\\logback\\logback-core\\1.2.3\\logback-core-1.2.3.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\logging\\log4j\\log4j-to-slf4j\\2.10.0\\log4j-to-slf4j-2.10.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\logging\\log4j\\log4j-api\\2.10.0\\log4j-api-2.10.0.jar;D:\\work\\maven\\m2\\repository\\org\\slf4j\\jul-to-slf4j\\1.7.25\\jul-to-slf4j-1.7.25.jar;D:\\work\\maven\\m2\\repository\\javax\\annotation\\javax.annotation-api\\1.3.2\\javax.annotation-api-1.3.2.jar;D:\\work\\maven\\m2\\repository\\org\\yaml\\snakeyaml\\1.19\\snakeyaml-1.19.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-json\\2.0.6.RELEASE\\spring-boot-starter-json-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-databind\\2.9.7\\jackson-databind-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-annotations\\2.9.0\\jackson-annotations-2.9.0.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-core\\2.9.7\\jackson-core-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\datatype\\jackson-datatype-jdk8\\2.9.7\\jackson-datatype-jdk8-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\datatype\\jackson-datatype-jsr310\\2.9.7\\jackson-datatype-jsr310-2.9.7.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\jackson\\module\\jackson-module-parameter-names\\2.9.7\\jackson-module-parameter-names-2.9.7.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-tomcat\\2.0.6.RELEASE\\spring-boot-starter-tomcat-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\embed\\tomcat-embed-el\\8.5.34\\tomcat-embed-el-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\embed\\tomcat-embed-websocket\\8.5.34\\tomcat-embed-websocket-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\hibernate\\validator\\hibernate-validator\\6.0.13.Final\\hibernate-validator-6.0.13.Final.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-web\\5.0.10.RELEASE\\spring-web-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-beans\\5.0.10.RELEASE\\spring-beans-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-webmvc\\5.0.10.RELEASE\\spring-webmvc-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-aop\\5.0.10.RELEASE\\spring-aop-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-context\\5.0.10.RELEASE\\spring-context-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-expression\\5.0.10.RELEASE\\spring-expression-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-test\\2.0.6.RELEASE\\spring-boot-starter-test-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-test\\2.0.6.RELEASE\\spring-boot-test-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-test-autoconfigure\\2.0.6.RELEASE\\spring-boot-test-autoconfigure-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\jayway\\jsonpath\\json-path\\2.4.0\\json-path-2.4.0.jar;D:\\work\\maven\\m2\\repository\\net\\minidev\\json-smart\\2.3\\json-smart-2.3.jar;D:\\work\\maven\\m2\\repository\\net\\minidev\\accessors-smart\\1.2\\accessors-smart-1.2.jar;D:\\work\\maven\\m2\\repository\\org\\ow2\\asm\\asm\\5.0.4\\asm-5.0.4.jar;D:\\work\\maven\\m2\\repository\\junit\\junit\\4.12\\junit-4.12.jar;D:\\work\\maven\\m2\\repository\\org\\assertj\\assertj-core\\3.9.1\\assertj-core-3.9.1.jar;D:\\work\\maven\\m2\\repository\\org\\mockito\\mockito-core\\2.15.0\\mockito-core-2.15.0.jar;D:\\work\\maven\\m2\\repository\\net\\bytebuddy\\byte-buddy\\1.7.11\\byte-buddy-1.7.11.jar;D:\\work\\maven\\m2\\repository\\net\\bytebuddy\\byte-buddy-agent\\1.7.11\\byte-buddy-agent-1.7.11.jar;D:\\work\\maven\\m2\\repository\\org\\objenesis\\objenesis\\2.6\\objenesis-2.6.jar;D:\\work\\maven\\m2\\repository\\org\\hamcrest\\hamcrest-core\\1.3\\hamcrest-core-1.3.jar;D:\\work\\maven\\m2\\repository\\org\\hamcrest\\hamcrest-library\\1.3\\hamcrest-library-1.3.jar;D:\\work\\maven\\m2\\repository\\org\\skyscreamer\\jsonassert\\1.5.0\\jsonassert-1.5.0.jar;D:\\work\\maven\\m2\\repository\\com\\vaadin\\external\\google\\android-json\\0.0.20131108.vaadin1\\android-json-0.0.20131108.vaadin1.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-core\\5.0.10.RELEASE\\spring-core-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-jcl\\5.0.10.RELEASE\\spring-jcl-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-test\\5.0.10.RELEASE\\spring-test-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\xmlunit\\xmlunit-core\\2.5.1\\xmlunit-core-2.5.1.jar;D:\\work\\maven\\m2\\repository\\com\\orange\\verify\\api\\1.0.0\\api-1.0.0.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-boot-starter\\3.0.6\\mybatis-plus-boot-starter-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus\\3.0.6\\mybatis-plus-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-extension\\3.0.6\\mybatis-plus-extension-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-core\\3.0.6\\mybatis-plus-core-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-annotation\\3.0.6\\mybatis-plus-annotation-3.0.6.jar;D:\\work\\maven\\m2\\repository\\com\\github\\jsqlparser\\jsqlparser\\1.2\\jsqlparser-1.2.jar;D:\\work\\maven\\m2\\repository\\org\\mybatis\\mybatis-spring\\1.3.2\\mybatis-spring-1.3.2.jar;D:\\work\\maven\\m2\\repository\\org\\mybatis\\mybatis\\3.4.6\\mybatis-3.4.6.jar;D:\\work\\maven\\m2\\repository\\com\\baomidou\\mybatis-plus-generator\\3.0.6\\mybatis-plus-generator-3.0.6.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-jdbc\\2.0.6.RELEASE\\spring-boot-starter-jdbc-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\zaxxer\\HikariCP\\2.7.9\\HikariCP-2.7.9.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-jdbc\\5.0.10.RELEASE\\spring-jdbc-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-configuration-processor\\2.0.6.RELEASE\\spring-boot-configuration-processor-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\com\\orange\\verify\\common\\1.0.0\\common-1.0.0.jar;D:\\work\\maven\\m2\\repository\\cn\\hutool\\hutool-all\\4.2.1\\hutool-all-4.2.1.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\commons\\commons-lang3\\3.7\\commons-lang3-3.7.jar;D:\\work\\maven\\m2\\repository\\commons-codec\\commons-codec\\1.11\\commons-codec-1.11.jar;D:\\work\\maven\\m2\\repository\\com\\sun\\mail\\javax.mail\\1.6.2\\javax.mail-1.6.2.jar;D:\\work\\maven\\m2\\repository\\javax\\activation\\activation\\1.1\\activation-1.1.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\embed\\tomcat-embed-core\\8.5.34\\tomcat-embed-core-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\tomcat\\tomcat-annotations-api\\8.5.34\\tomcat-annotations-api-8.5.34.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-spring\\1.4.0\\shiro-spring-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-core\\1.4.0\\shiro-core-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-lang\\1.4.0\\shiro-lang-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-crypto-hash\\1.4.0\\shiro-crypto-hash-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-crypto-core\\1.4.0\\shiro-crypto-core-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-crypto-cipher\\1.4.0\\shiro-crypto-cipher-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-config-core\\1.4.0\\shiro-config-core-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-config-ogdl\\1.4.0\\shiro-config-ogdl-1.4.0.jar;D:\\work\\maven\\m2\\repository\\commons-beanutils\\commons-beanutils\\1.9.3\\commons-beanutils-1.9.3.jar;D:\\work\\maven\\m2\\repository\\commons-collections\\commons-collections\\3.2.2\\commons-collections-3.2.2.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-event\\1.4.0\\shiro-event-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-web\\1.4.0\\shiro-web-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-ehcache\\1.4.0\\shiro-ehcache-1.4.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\shiro\\shiro-cache\\1.4.0\\shiro-cache-1.4.0.jar;D:\\work\\maven\\m2\\repository\\net\\sf\\ehcache\\ehcache-core\\2.6.11\\ehcache-core-2.6.11.jar;D:\\work\\maven\\m2\\repository\\org\\crazycake\\shiro-redis\\2.4.2.1-RELEASE\\shiro-redis-2.4.2.1-RELEASE.jar;D:\\work\\maven\\m2\\repository\\redis\\clients\\jedis\\2.9.0\\jedis-2.9.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\commons\\commons-pool2\\2.5.0\\commons-pool2-2.5.0.jar;D:\\work\\maven\\m2\\repository\\org\\slf4j\\slf4j-api\\1.7.25\\slf4j-api-1.7.25.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\fastjson\\1.2.52\\fastjson-1.2.52.jar;D:\\work\\maven\\m2\\repository\\org\\projectlombok\\lombok\\1.16.18\\lombok-1.16.18.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\boot\\dubbo-spring-boot-starter\\0.2.0\\dubbo-spring-boot-starter-0.2.0.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\dubbo\\2.6.2\\dubbo-2.6.2.jar;D:\\work\\maven\\m2\\repository\\org\\javassist\\javassist\\3.20.0-GA\\javassist-3.20.0-GA.jar;D:\\work\\maven\\m2\\repository\\org\\jboss\\netty\\netty\\3.2.5.Final\\netty-3.2.5.Final.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\zookeeper\\zookeeper\\3.4.9\\zookeeper-3.4.9.jar;D:\\work\\maven\\m2\\repository\\jline\\jline\\0.9.94\\jline-0.9.94.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty\\3.10.5.Final\\netty-3.10.5.Final.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\curator\\curator-framework\\2.12.0\\curator-framework-2.12.0.jar;D:\\work\\maven\\m2\\repository\\org\\apache\\curator\\curator-client\\2.12.0\\curator-client-2.12.0.jar;D:\\work\\maven\\m2\\repository\\com\\google\\guava\\guava\\16.0.1\\guava-16.0.1.jar;D:\\work\\maven\\m2\\repository\\com\\alibaba\\boot\\dubbo-spring-boot-autoconfigure\\0.2.0\\dubbo-spring-boot-autoconfigure-0.2.0.jar;D:\\work\\maven\\m2\\repository\\org\\aspectj\\aspectjweaver\\1.8.13\\aspectjweaver-1.8.13.jar;D:\\work\\maven\\m2\\repository\\org\\hibernate\\hibernate-validator\\5.4.1.Final\\hibernate-validator-5.4.1.Final.jar;D:\\work\\maven\\m2\\repository\\javax\\validation\\validation-api\\2.0.1.Final\\validation-api-2.0.1.Final.jar;D:\\work\\maven\\m2\\repository\\org\\jboss\\logging\\jboss-logging\\3.3.2.Final\\jboss-logging-3.3.2.Final.jar;D:\\work\\maven\\m2\\repository\\com\\fasterxml\\classmate\\1.3.4\\classmate-1.3.4.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\boot\\spring-boot-starter-data-redis\\2.0.6.RELEASE\\spring-boot-starter-data-redis-2.0.6.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\data\\spring-data-redis\\2.0.11.RELEASE\\spring-data-redis-2.0.11.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\data\\spring-data-keyvalue\\2.0.11.RELEASE\\spring-data-keyvalue-2.0.11.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\data\\spring-data-commons\\2.0.11.RELEASE\\spring-data-commons-2.0.11.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-tx\\5.0.10.RELEASE\\spring-tx-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-oxm\\5.0.10.RELEASE\\spring-oxm-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\springframework\\spring-context-support\\5.0.10.RELEASE\\spring-context-support-5.0.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\io\\lettuce\\lettuce-core\\5.0.5.RELEASE\\lettuce-core-5.0.5.RELEASE.jar;D:\\work\\maven\\m2\\repository\\io\\projectreactor\\reactor-core\\3.1.10.RELEASE\\reactor-core-3.1.10.RELEASE.jar;D:\\work\\maven\\m2\\repository\\org\\reactivestreams\\reactive-streams\\1.0.2\\reactive-streams-1.0.2.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-common\\4.1.29.Final\\netty-common-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-transport\\4.1.29.Final\\netty-transport-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-buffer\\4.1.29.Final\\netty-buffer-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-resolver\\4.1.29.Final\\netty-resolver-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-handler\\4.1.29.Final\\netty-handler-4.1.29.Final.jar;D:\\work\\maven\\m2\\repository\\io\\netty\\netty-codec\\4.1.29.Final\\netty-codec-4.1.29.Final.jar;\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.library.path=D:\\work\\jdk\\jdk1.8\\jdk\\jre\\bin;C:\\WINDOWS\\Sun\\Java\\bin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;D:\\work\\jdk\\jdk1.8\\jdk\\bin;D:\\mysql-5.7.11-winx64\\mysql-5.7.11-winx64\\bin;C:\\Program Files\\dotnet\\;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn\\;D:\\work\\maven\\apache-maven-3.5.3-bin\\apache-maven-3.5.3\\bin;D:\\work\\thrift;C:\\WINDOWS\\System32\\OpenSSH\\;D:\\work\\node\\;D:\\work\\git\\Git\\bin;D:\\tool\\\\python\\Scripts\\;D:\\;ool\\\\python\\;C:\\;sers\\10673\\AppData\\Local\\Programs\\Python\\Launcher\\;C:\\Users\\10673\\AppData\\Local\\Microsoft\\WindowsApps;D:\\칫;C;\\Users\\10673\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\10673\\AppData\\Roaming\\npm;D:\\work\\ץ\\fiddler;;D:\\work\\docker\\Docker Toolbox;G:\\tool\\programming\\vscode\\Microsoft VS Code\\bin;.\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.io.tmpdir=C:\\Users\\10673\\AppData\\Local\\Temp\\\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:java.compiler=<NA>\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:os.name=Windows 10\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:os.arch=amd64\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:os.version=10.0\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:user.name=10673\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:user.home=C:\\Users\\10673\n22:40:43.123 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Client environment:user.dir=E:\\project\\java\\orange\\verifymaster\\admin-web\n22:40:43.124 logback [main] INFO  org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=localhost:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@4613311f\n22:40:43.148 logback [main-SendThread(0:0:0:0:0:0:0:1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Opening socket connection to server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)\n22:40:43.150 logback [main-SendThread(0:0:0:0:0:0:0:1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Socket connection established to 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, initiating session\n22:40:43.161 logback [main-SendThread(0:0:0:0:0:0:0:1:2181)] INFO  org.apache.zookeeper.ClientCnxn - Session establishment complete on server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, sessionid = 0x1000027f443006a, negotiated timeout = 40000\n22:40:43.174 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:43.177 logback [main-EventThread] INFO  o.a.c.f.state.ConnectionStateManager - State change: CONNECTED\n22:40:43.216 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:43.252 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, urls: [empty://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, empty://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, empty://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:43.266 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference(ConfigurationClassEnhancer.java:396)\n\tat org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:368)\n\tat com.orange.verify.adminweb.config.ShiroConfig$$EnhancerBySpringCGLIB$$874aaf79.customRealm(<generated>)\n\tat com.orange.verify.adminweb.config.ShiroConfig.securityManager(ShiroConfig.java:87)\n\tat com.orange.verify.adminweb.config.ShiroConfig$$EnhancerBySpringCGLIB$$874aaf79.CGLIB$securityManager$0(<generated>)\n\tat com.orange.verify.adminweb.config.ShiroConfig$$EnhancerBySpringCGLIB$$874aaf79$$FastClassBySpringCGLIB$$776dbd5e.invoke(<generated>)\n\tat org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)\n\tat org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:365)\n\tat com.orange.verify.adminweb.config.ShiroConfig$$EnhancerBySpringCGLIB$$874aaf79.securityManager(<generated>)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)\n\tat org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:583)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)\n\tat org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:819)\n\tat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:725)\n\tat org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:475)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:943)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:826)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:562)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:426)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:389)\n\tat org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:214)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1273)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1098)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)\n\tat org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:819)\n\tat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:725)\n\tat org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:475)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)\n\tat org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:224)\n\tat org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:708)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.UserService. No provider available for the service com.orange.verify.api.service.UserService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736031536 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 107 common frames omitted\n22:40:43.268 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.UserService\" interface=\"com.orange.verify.api.service.UserService\" generic=\"false\" id=\"com.orange.verify.api.service.UserService\" /> has been built.\n22:40:43.269 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'customRealm' of type [com.orange.verify.adminweb.realm.CustomRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.302 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'redisSessionDAO' of type [org.crazycake.shiro.RedisSessionDAO] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.326 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'sessionManager' of type [org.apache.shiro.web.session.mgt.DefaultWebSessionManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.346 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.509 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.547 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'redisConfig' of type [com.orange.verify.adminweb.config.RedisConfig$$EnhancerBySpringCGLIB$$d21936c3] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.877 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.884 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.897 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:43.905 logback [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'relaxedDubboConfigBinder' of type [com.alibaba.boot.dubbo.autoconfigure.RelaxedDubboConfigBinder] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n22:40:44.642 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:44.655 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:44.667 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, urls: [empty://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, empty://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, empty://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:44.670 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.AccountService. No provider available for the service com.orange.verify.api.service.AccountService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736044599 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:44.674 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.AccountService\" interface=\"com.orange.verify.api.service.AccountService\" generic=\"false\" id=\"com.orange.verify.api.service.AccountService\" /> has been built.\n22:40:44.796 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:44.804 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:44.828 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, urls: [empty://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, empty://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, empty://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:44.830 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.AccountLoginLogService. No provider available for the service com.orange.verify.api.service.AccountLoginLogService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736044743 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:44.830 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.AccountLoginLogService\" interface=\"com.orange.verify.api.service.AccountLoginLogService\" generic=\"false\" id=\"com.orange.verify.api.service.AccountLoginLogService\" /> has been built.\n22:40:45.020 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.051 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.072 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, urls: [empty://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, empty://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, empty://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.075 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.AccountRegisterLogService. No provider available for the service com.orange.verify.api.service.AccountRegisterLogService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736044992 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:45.076 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.AccountRegisterLogService\" interface=\"com.orange.verify.api.service.AccountRegisterLogService\" generic=\"false\" id=\"com.orange.verify.api.service.AccountRegisterLogService\" /> has been built.\n22:40:45.181 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.187 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.220 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, urls: [empty://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, empty://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, empty://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.221 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.BaiduMapApiService. No provider available for the service com.orange.verify.api.service.BaiduMapApiService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736045113 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:45.222 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.BaiduMapApiService\" interface=\"com.orange.verify.api.service.BaiduMapApiService\" generic=\"false\" id=\"com.orange.verify.api.service.BaiduMapApiService\" /> has been built.\n22:40:45.325 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.405 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.604 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, urls: [empty://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, empty://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, empty://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.605 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.CardService. No provider available for the service com.orange.verify.api.service.CardService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736045297 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:45.606 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.CardService\" interface=\"com.orange.verify.api.service.CardService\" generic=\"false\" id=\"com.orange.verify.api.service.CardService\" /> has been built.\n22:40:45.702 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.729 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.761 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, urls: [empty://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, empty://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, empty://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.762 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.CardTypeService. No provider available for the service com.orange.verify.api.service.CardTypeService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736045674 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:45.763 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.CardTypeService\" interface=\"com.orange.verify.api.service.CardTypeService\" generic=\"false\" id=\"com.orange.verify.api.service.CardTypeService\" /> has been built.\n22:40:45.841 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.873 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.928 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, urls: [empty://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, empty://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, empty://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.929 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.EmailAccountService. No provider available for the service com.orange.verify.api.service.EmailAccountService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736045808 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:45.929 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.EmailAccountService\" interface=\"com.orange.verify.api.service.EmailAccountService\" generic=\"false\" id=\"com.orange.verify.api.service.EmailAccountService\" /> has been built.\n22:40:45.959 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:45.963 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.008 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, urls: [empty://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, empty://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, empty://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.012 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.InterfaceManagementService. No provider available for the service com.orange.verify.api.service.InterfaceManagementService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736045952 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:46.012 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.InterfaceManagementService\" interface=\"com.orange.verify.api.service.InterfaceManagementService\" generic=\"false\" id=\"com.orange.verify.api.service.InterfaceManagementService\" /> has been built.\n22:40:46.117 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.129 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.144 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, urls: [empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, empty://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.145 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.SoftService. No provider available for the service com.orange.verify.api.service.SoftService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736046093 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:46.145 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.SoftService\" interface=\"com.orange.verify.api.service.SoftService\" generic=\"false\" id=\"com.orange.verify.api.service.SoftService\" /> has been built.\n22:40:46.192 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.197 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.216 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, urls: [empty://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, empty://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, empty://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.218 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.SoftLeaveMessageService. No provider available for the service com.orange.verify.api.service.SoftLeaveMessageService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736046174 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:46.223 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.SoftLeaveMessageService\" interface=\"com.orange.verify.api.service.SoftLeaveMessageService\" generic=\"false\" id=\"com.orange.verify.api.service.SoftLeaveMessageService\" /> has been built.\n22:40:46.296 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Register: consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.327 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Subscribe: consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.364 logback [main] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Notify urls for subscribe url consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, urls: [empty://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=providers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, empty://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=configurators&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, empty://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:46.364 logback [main] WARN  c.a.dubbo.config.AbstractConfig -  [DUBBO] null, dubbo version: 2.6.2, current host: 169.254.195.210\njava.lang.reflect.InvocationTargetException: null\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.alibaba.dubbo.config.AbstractConfig.toString(AbstractConfig.java:474)\n\tat java.lang.String.valueOf(String.java:2994)\n\tat java.lang.StringBuilder.append(StringBuilder.java:131)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.AbstractAnnotationConfigBeanBuilder.build(AbstractAnnotationConfigBeanBuilder.java:79)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildReferenceBean(ReferenceAnnotationBeanPostProcessor.java:385)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.access$100(ReferenceAnnotationBeanPostProcessor.java:65)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceFieldElement.inject(ReferenceAnnotationBeanPostProcessor.java:363)\n\tat org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)\n\tat com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.postProcessPropertyValues(ReferenceAnnotationBeanPostProcessor.java:92)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)\n\tat org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)\n\tat org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\n\tat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)\n\tat org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)\n\tat org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)\n\tat org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)\n\tat org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)\n\tat org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)\nCaused by: java.lang.IllegalStateException: Failed to check the status of the service com.orange.verify.api.service.SoftVersionsService. No provider available for the service com.orange.verify.api.service.SoftVersionsService from the url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&register.ip=169.254.195.210&revision=1.0.0&side=consumer&timestamp=1547736046258 to the consumer 169.254.195.210 use dubbo version 2.6.2\n\tat com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:422)\n\tat com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)\n\tat com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)\n\tat com.alibaba.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:66)\n\t... 56 common frames omitted\n22:40:46.365 logback [main] INFO  c.a.d.c.s.b.f.a.ReferenceBeanBuilder - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.SoftVersionsService\" interface=\"com.orange.verify.api.service.SoftVersionsService\" generic=\"false\" id=\"com.orange.verify.api.service.SoftVersionsService\" /> has been built.\n22:40:47.121 logback [main] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]\n22:40:47.938 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: org.springframework.web.context.support.GenericWebApplicationContext@3cfdd820: startup date [Thu Jan 17 22:40:27 CST 2019]; root of context hierarchy\n22:40:48.096 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/remove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.remove(java.lang.String)\n22:40:48.098 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/count],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.count()\n22:40:48.099 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/register],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.register(com.orange.verify.api.vo.open.AccountRegisterVo,org.springframework.validation.BindingResult,javax.servlet.http.HttpServletRequest) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.099 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/getPublicKey],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.getPublicKey()\n22:40:48.101 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/login],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.login(com.orange.verify.api.vo.open.AccountLoginVo,org.springframework.validation.BindingResult,javax.servlet.http.HttpServletRequest) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.105 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.page(com.orange.verify.api.vo.AccountVo,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.108 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/getVerificationCode],methods=[GET]}\" onto public void com.orange.verify.adminweb.controller.AccountController.getVerificationCode(com.orange.verify.api.vo.open.AccountVerificationCodeVo,javax.servlet.http.HttpServletResponse)\n22:40:48.108 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/bindingCard],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.bindingCard(com.orange.verify.api.vo.open.AccountBindingCardVo,org.springframework.validation.BindingResult) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.108 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/bindingCode],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.bindingCode(com.orange.verify.api.vo.open.AccountBindingCodeVo,org.springframework.validation.BindingResult) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.109 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/updatePassword],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.updatePassword(com.orange.verify.api.vo.open.AccountUpdatePasswordVo,org.springframework.validation.BindingResult) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.110 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/account/blacklist],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountController.blacklist(java.lang.String,java.lang.Integer)\n22:40:48.114 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/accountLoginLog/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountLoginLogController.page(com.orange.verify.api.vo.AccountLoginLogVo,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.115 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/accountLoginLog/getBeforeData],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountLoginLogController.getBeforeData(java.lang.String)\n22:40:48.119 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/accountRegisterLog/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountRegisterLogController.page(com.orange.verify.api.bean.AccountRegisterLog,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.123 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/accountRegisterLog/getBeforeData],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.AccountRegisterLogController.getBeforeData(java.lang.String)\n22:40:48.125 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/baiduMapApi/update],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.BaiduMapApiController.update(com.orange.verify.api.bean.BaiduMapApi)\n22:40:48.126 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/baiduMapApi/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.BaiduMapApiController.create(com.orange.verify.api.bean.BaiduMapApi)\n22:40:48.127 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/baiduMapApi/single],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.BaiduMapApiController.single()\n22:40:48.130 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/remove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.remove(java.lang.String)\n22:40:48.130 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/count],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.count()\n22:40:48.132 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.create(com.orange.verify.api.bean.Card,java.lang.Integer)\n22:40:48.136 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/batchRemove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.batchRemove(java.util.List<java.lang.String>)\n22:40:48.140 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/closure],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.closure(java.lang.String,java.lang.Integer)\n22:40:48.149 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.page(com.orange.verify.api.vo.CardVo,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.158 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/getCardTimeLimit],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.getCardTimeLimit(java.lang.String,java.lang.String,java.lang.String)\n22:40:48.159 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/sellStatus],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.sellStatus(java.lang.String,java.lang.Integer)\n22:40:48.160 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/card/sell],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardController.sell(java.util.List<java.lang.String>)\n22:40:48.162 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/cardType/remove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardTypeController.remove(java.lang.String)\n22:40:48.171 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/cardType/update],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardTypeController.update(com.orange.verify.api.bean.CardType)\n22:40:48.172 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/cardType/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardTypeController.create(com.orange.verify.api.bean.CardType)\n22:40:48.174 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/cardType/list],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardTypeController.list()\n22:40:48.186 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/cardType/single],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardTypeController.single(java.lang.String)\n22:40:48.196 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/cardType/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.CardTypeController.page(com.orange.verify.api.bean.CardType,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.198 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/emailAccount/remove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.EmailAccountController.remove(java.lang.String)\n22:40:48.206 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/emailAccount/update],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.EmailAccountController.update(com.orange.verify.api.bean.EmailAccount)\n22:40:48.206 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/emailAccount/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.EmailAccountController.create(com.orange.verify.api.bean.EmailAccount)\n22:40:48.206 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/emailAccount/list],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.EmailAccountController.list()\n22:40:48.206 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/emailAccount/single],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.EmailAccountController.single(java.lang.String)\n22:40:48.210 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/interfaceManagement/update],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.InterfaceManagementController.update(com.orange.verify.api.bean.InterfaceManagement)\n22:40:48.226 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/interfaceManagement/list],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.InterfaceManagementController.list()\n22:40:48.228 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/interfaceManagement/ipHandle],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.InterfaceManagementController.ipHandle(java.lang.String,java.lang.Integer)\n22:40:48.229 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/interfaceManagement/getSingle],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.InterfaceManagementController.getSingle(java.lang.String)\n22:40:48.230 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/interfaceManagement/closeInterface],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.InterfaceManagementController.closeInterface(java.lang.String,java.lang.Integer)\n22:40:48.246 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/remove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.remove(java.lang.String)\n22:40:48.247 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/count],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.count()\n22:40:48.256 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/update],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.update(com.orange.verify.api.bean.Soft)\n22:40:48.257 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.create(com.orange.verify.api.bean.Soft)\n22:40:48.258 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/list],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.list()\n22:40:48.261 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/single],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.single(java.lang.String)\n22:40:48.262 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.page(com.orange.verify.api.bean.Soft,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.263 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/soft/getSoftDesc],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftController.getSoftDesc(com.orange.verify.api.vo.open.SoftGetSoftDescVo,org.springframework.validation.BindingResult) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.263 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softLeaveMessage/remove],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftLeaveMessageController.remove(java.lang.String)\n22:40:48.264 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softLeaveMessage/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftLeaveMessageController.create(com.orange.verify.api.vo.open.SoftLeaveMeesageSubmitVo,org.springframework.validation.BindingResult,javax.servlet.http.HttpServletRequest) throws com.orange.verify.adminweb.annotation.ParameterError\n22:40:48.266 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softLeaveMessage/page],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftLeaveMessageController.page(com.orange.verify.api.vo.SoftLeaveMessageVo,com.baomidou.mybatisplus.extension.plugins.pagination.Page)\n22:40:48.272 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softVersions/update],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftVersionsController.update(com.orange.verify.api.bean.SoftVersions)\n22:40:48.273 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softVersions/create],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftVersionsController.create(com.orange.verify.api.bean.SoftVersions)\n22:40:48.273 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softVersions/getVersions],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftVersionsController.getVersions(java.lang.String)\n22:40:48.273 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/softVersions/getSingleBySoftId],methods=[GET]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.SoftVersionsController.getSingleBySoftId(java.lang.String)\n22:40:48.275 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/user/login],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.UserController.login(com.orange.verify.api.bean.User)\n22:40:48.275 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/user/logout],methods=[POST]}\" onto public com.orange.verify.adminweb.model.Response com.orange.verify.adminweb.controller.UserController.logout()\n22:40:48.281 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/error]}\" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)\n22:40:48.282 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped \"{[/error],produces=[text/html]}\" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)\n22:40:48.407 logback [main] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]\n22:40:48.410 logback [main] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]\n22:40:48.463 logback [main] INFO  o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Detected @ExceptionHandler methods in shiroFilterConfig\n22:40:48.662 logback [main] INFO  c.a.d.c.s.b.f.a.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.ProtocolConfig#0] have been binding by prefix of configuration properties : dubbo.protocol\n22:40:49.406 logback [main] INFO  c.o.v.a.AdminWebApplicationTests - Started AdminWebApplicationTests in 23.16 seconds (JVM running for 24.554)\n22:40:49.754 logback [main] INFO  io.lettuce.core.EpollProvider - Starting without optional epoll library\n22:40:49.757 logback [main] INFO  io.lettuce.core.KqueueProvider - Starting without optional kqueue library\n22:40:56.003 logback [Thread-2] INFO  o.s.w.c.s.GenericWebApplicationContext - Closing org.springframework.web.context.support.GenericWebApplicationContext@3cfdd820: startup date [Thu Jan 17 22:40:27 CST 2019]; root of context hierarchy\n22:40:56.003 logback [DubboShutdownHook] INFO  c.a.dubbo.config.AbstractConfig -  [DUBBO] Run shutdown hook now., dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.004 logback [DubboShutdownHook] INFO  c.a.d.r.s.AbstractRegistryFactory -  [DUBBO] Close all registries [zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&client=curator&dubbo=2.6.2&interface=com.alibaba.dubbo.registry.RegistryService&pid=22068&timestamp=1547736031591], dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.004 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy registry:zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=com-orange-verify-client&client=curator&dubbo=2.6.2&interface=com.alibaba.dubbo.registry.RegistryService&pid=22068&timestamp=1547736031591, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.007 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.021 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.021 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.024 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.025 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.027 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.027 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.029 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.030 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.032 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.032 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.035 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.035 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.037 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.037 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.042 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.042 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.045 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.045 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.048 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.048 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.051 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.051 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unregister: consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unregister url consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=consumers&check=false&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.CardService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,sell,count,listObjs,list,getMap,updateById,batchRemove,pageMaps,listByMap,getById,getOne,page,getCardTimeLimit&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045297, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.InterfaceManagementService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.InterfaceManagementService&methods=getSingle,getAll,ipHandle,update,closeInterface&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045952, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.054 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.AccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountService&methods=bindingCard,removeById,save,removeByMap,update,getObj,login,saveOrUpdateBatch,remove,listByIds,removeByIds,saveVerificationCode,updateBatchById,saveOrUpdate,updatePassword,listMaps,saveBatch,count,listObjs,bindingCode,getPublicKey,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page,register&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044599, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.SoftVersionsService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftVersionsService&methods=removeById,save,removeByMap,update,getObj,saveLogic,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getVersions,saveOrUpdate,getSingleBySoftId,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046258, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.AccountLoginLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountLoginLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044743, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.EmailAccountService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.EmailAccountService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,getList,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045808, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.BaiduMapApiService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.BaiduMapApiService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045113, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.055 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.CardTypeService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.CardTypeService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736045674, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.UserService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.UserService&methods=removeById,save,removeByMap,update,getObj,verifyUser,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736031536, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.AccountRegisterLogService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.AccountRegisterLogService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,getBeforeData,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736044992, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.SoftService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getSoftDesc,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046093, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.056 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Unsubscribe: consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.057 logback [DubboShutdownHook] INFO  c.a.d.r.zookeeper.ZookeeperRegistry -  [DUBBO] Destroy unsubscribe url consumer://169.254.195.210/com.orange.verify.api.service.SoftLeaveMessageService?application=com-orange-verify-client&category=providers,configurators,routers&default.retries=0&default.timeout=10000&dubbo=2.6.2&interface=com.orange.verify.api.service.SoftLeaveMessageService&methods=removeById,save,removeByMap,update,getObj,saveOrUpdateBatch,remove,listByIds,removeByIds,updateBatchById,create,saveOrUpdate,listMaps,saveBatch,count,listObjs,list,getMap,updateById,pageMaps,listByMap,getById,getOne,page&pid=22068&revision=1.0.0&side=consumer&timestamp=1547736046174, dubbo version: 2.6.2, current host: 169.254.195.210\n22:40:56.058 logback [Curator-Framework-0] INFO  o.a.c.f.imps.CuratorFrameworkImpl - backgroundOperationsLoop exiting\n22:40:56.062 logback [DubboShutdownHook] INFO  org.apache.zookeeper.ZooKeeper - Session: 0x1000027f443006a closed\n22:40:56.062 logback [main-EventThread] INFO  org.apache.zookeeper.ClientCnxn - EventThread shut down for session: 0x1000027f443006a\n22:40:57.133 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.BaiduMapApiService\" interface=\"com.orange.verify.api.service.BaiduMapApiService\" generic=\"false\" id=\"com.orange.verify.api.service.BaiduMapApiService\" /> was destroying!\n22:40:57.134 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.EmailAccountService\" interface=\"com.orange.verify.api.service.EmailAccountService\" generic=\"false\" id=\"com.orange.verify.api.service.EmailAccountService\" /> was destroying!\n22:40:57.135 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.AccountLoginLogService\" interface=\"com.orange.verify.api.service.AccountLoginLogService\" generic=\"false\" id=\"com.orange.verify.api.service.AccountLoginLogService\" /> was destroying!\n22:40:57.137 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.UserService\" interface=\"com.orange.verify.api.service.UserService\" generic=\"false\" id=\"com.orange.verify.api.service.UserService\" /> was destroying!\n22:40:57.137 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.AccountService\" interface=\"com.orange.verify.api.service.AccountService\" generic=\"false\" id=\"com.orange.verify.api.service.AccountService\" /> was destroying!\n22:40:57.138 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.CardTypeService\" interface=\"com.orange.verify.api.service.CardTypeService\" generic=\"false\" id=\"com.orange.verify.api.service.CardTypeService\" /> was destroying!\n22:40:57.138 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.SoftVersionsService\" interface=\"com.orange.verify.api.service.SoftVersionsService\" generic=\"false\" id=\"com.orange.verify.api.service.SoftVersionsService\" /> was destroying!\n22:40:57.138 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.AccountRegisterLogService\" interface=\"com.orange.verify.api.service.AccountRegisterLogService\" generic=\"false\" id=\"com.orange.verify.api.service.AccountRegisterLogService\" /> was destroying!\n22:40:57.138 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.CardService\" interface=\"com.orange.verify.api.service.CardService\" generic=\"false\" id=\"com.orange.verify.api.service.CardService\" /> was destroying!\n22:40:57.139 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.SoftLeaveMessageService\" interface=\"com.orange.verify.api.service.SoftLeaveMessageService\" generic=\"false\" id=\"com.orange.verify.api.service.SoftLeaveMessageService\" /> was destroying!\n22:40:57.139 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.SoftService\" interface=\"com.orange.verify.api.service.SoftService\" generic=\"false\" id=\"com.orange.verify.api.service.SoftService\" /> was destroying!\n22:40:57.139 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - <dubbo:reference singleton=\"true\" uniqueServiceName=\"com.orange.verify.api.service.InterfaceManagementService\" interface=\"com.orange.verify.api.service.InterfaceManagementService\" generic=\"false\" id=\"com.orange.verify.api.service.InterfaceManagementService\" /> was destroying!\n22:40:57.139 logback [Thread-2] INFO  c.a.d.c.s.b.f.a.ReferenceAnnotationBeanPostProcessor - class com.alibaba.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor was destroying!\n"
  },
  {
    "path": "admin-web/mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven2 Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\n  # TODO classpath?\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        wget \"$jarUrl\" -O \"$wrapperJarPath\"\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        curl -o \"$wrapperJarPath\" \"$jarUrl\"\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "admin-web/mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    http://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven2 Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\nFOR /F \"tokens=1,2 delims==\" %%A IN (%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties) DO (\n\tIF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B \n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    echo Found %WRAPPER_JAR%\n) else (\n    echo Couldn't find %WRAPPER_JAR%, downloading it ...\n\techo Downloading from: %DOWNLOAD_URL%\n    powershell -Command \"(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"\n    echo Finished downloading %WRAPPER_JAR%\n)\n@REM End of extension\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "admin-web/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.orange.verify</groupId>\n    <artifactId>admin-web</artifactId>\n    <version>1.0.0</version>\n    <packaging>jar</packaging>\n\n    <name>admin-web</name>\n    <description>Demo project for Spring Boot</description>\n\n    <parent>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-parent</artifactId>\n        <version>2.0.6.RELEASE</version>\n        <relativePath/> <!-- lookup parent from repository -->\n    </parent>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n    </properties>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.orange.verify</groupId>\n            <artifactId>api</artifactId>\n            <version>1.0.0</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.orange.verify</groupId>\n            <artifactId>common</artifactId>\n            <version>1.0.0</version>\n            <scope>compile</scope>\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-spring</artifactId>\n            <version>1.4.0</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-ehcache</artifactId>\n            <version>1.4.0</version>\n        </dependency>\n\n        <!-- shiro+redis缓存插件 -->\n        <dependency>\n            <groupId>org.crazycake</groupId>\n            <artifactId>shiro-redis</artifactId>\n            <version>2.4.2.1-RELEASE</version>\n        </dependency>\n\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>fastjson</artifactId>\n            <version>1.2.52</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <version>1.16.18</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.alibaba.boot</groupId>\n            <artifactId>dubbo-spring-boot-starter</artifactId>\n            <version>0.2.0</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.aspectj</groupId>\n            <artifactId>aspectjweaver</artifactId>\n            <version>1.8.13</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.hibernate</groupId>\n            <artifactId>hibernate-validator</artifactId>\n            <version>5.4.1.Final</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-redis</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>cn.hutool</groupId>\n            <artifactId>hutool-all</artifactId>\n            <version>4.5.1</version>\n        </dependency>\n\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n            </plugin>\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/AdminWebApplication.java",
    "content": "package com.orange.verify.adminweb;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;\n\n@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)\npublic class AdminWebApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(AdminWebApplication.class, args);\n    }\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/annotation/Open.java",
    "content": "package com.orange.verify.adminweb.annotation;\r\n\r\nimport java.lang.annotation.*;\r\n\r\n/**\r\n * 如果要Ip限流的注解这个\r\n * @author Ornage软件\r\n * @date 2019.3.15\r\n */\r\n@Target({ ElementType.METHOD, ElementType.TYPE })\r\n@Retention(RetentionPolicy.RUNTIME)\r\n@Documented\r\npublic @interface Open {\r\n\r\n    /**\r\n     * 接口说明\r\n     */\r\n    String explain() default \"...\";\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/annotation/ParameterError.java",
    "content": "package com.orange.verify.adminweb.annotation;\n\npublic class ParameterError extends Exception {\n\n    public ParameterError() {\n        super();\n    }\n\n    public ParameterError(String msg) {\n        super(msg);\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/annotation/RspHandle.java",
    "content": "package com.orange.verify.adminweb.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * rsp 返回操作\n * @author Orange\n * @date 2018/10/13\n */\n@Target({ ElementType.METHOD, ElementType.TYPE })\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\npublic @interface RspHandle {\n\n    //方法体报错 是否返回错误信息\n    boolean isSetErrorInfo() default false;\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/annotation/RspHandleAspect.java",
    "content": "package com.orange.verify.adminweb.annotation;\r\n\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.InterfaceManagement;\r\nimport com.orange.verify.api.redis.RedisKeyConstant;\r\nimport com.orange.verify.api.sc.InterfaceManagementIpHandle;\r\nimport com.orange.verify.api.sc.InterfaceManagementVisit;\r\nimport org.aspectj.lang.ProceedingJoinPoint;\r\nimport org.aspectj.lang.annotation.Around;\r\nimport org.aspectj.lang.annotation.Aspect;\r\nimport org.aspectj.lang.annotation.Pointcut;\r\nimport org.aspectj.lang.reflect.MethodSignature;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.data.redis.core.RedisTemplate;\r\nimport org.springframework.stereotype.Component;\r\nimport org.springframework.web.context.request.RequestAttributes;\r\nimport org.springframework.web.context.request.RequestContextHolder;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport java.lang.reflect.Method;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\n/**\r\n * rsp简化aop\r\n * @author Orange\r\n * @date 2018/10/13\r\n */\r\n@Aspect\r\n@Component\r\npublic class RspHandleAspect {\r\n\r\n    private static final Logger log = LoggerFactory.getLogger(RspHandleAspect.class);\r\n\r\n    @Autowired\r\n    private RedisTemplate redisTemplate;\r\n\r\n    @Pointcut(\"@annotation(com.orange.verify.adminweb.annotation.RspHandle)\")\r\n    public void annotationPointCut() {\r\n\r\n    }\r\n\r\n    @Around(\"annotationPointCut()\")\r\n    public Response arround(ProceedingJoinPoint pjp) throws Throwable {\r\n\r\n        RspHandle rspHandle = getRspHandle(pjp);\r\n\r\n        boolean setErrorInfo = rspHandle.isSetErrorInfo();\r\n\r\n        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();\r\n        HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);\r\n        String url =\r\n                pjp.getSignature().getDeclaringTypeName() + \".\" + pjp.getSignature().getName();\r\n\r\n        InterfaceManagement interfaceManagement =\r\n                (InterfaceManagement) redisTemplate.opsForValue().get(RedisKeyConstant.OPEN_INTERFACE + url);\r\n        if (interfaceManagement != null) {\r\n\r\n            if (interfaceManagement.getVisit() == InterfaceManagementVisit.CLOSE.getStatusCode()) {\r\n                return Response.build(ResponseCode.INTERFACE_CLOSE);\r\n            } else if (interfaceManagement.getIpHandle() == InterfaceManagementIpHandle.START.getStatusCode()) {\r\n                String remoteAddr =\r\n                        RedisKeyConstant.IP_LIBRARY + request.getRemoteAddr().replaceAll(\":\",\".\");\r\n\r\n                long count = redisTemplate.opsForValue().increment(remoteAddr, 1);\r\n                if (count == 1) {\r\n                    redisTemplate.expire(remoteAddr, interfaceManagement.getIpRedisInterval(), TimeUnit.MINUTES);\r\n                }\r\n                if (count > interfaceManagement.getIpVisits()) {\r\n                    Long expire = redisTemplate.getExpire(remoteAddr);\r\n                    String msg = \"访问过快哦！\" + expire + \"秒过后才能继续访问\";\r\n                    return Response.build(ResponseCode.TOO_FAST,msg);\r\n                }\r\n            }\r\n\r\n        }\r\n\r\n        try {\r\n\r\n            long startTime = System.currentTimeMillis();\r\n\r\n            Response response = (Response) pjp.proceed();\r\n\r\n            long endTime = System.currentTimeMillis();\r\n\r\n            response.setTotalTime(endTime - startTime);\r\n\r\n            return response;\r\n\r\n        } catch (ParameterError e) {\r\n            return Response.build(ResponseCode.PARAMETER_ERROR,e.getMessage());\r\n        } catch (Exception e) {\r\n            log.error(e.getMessage());\r\n            if (setErrorInfo == true) {\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR,e.getMessage());\r\n            } else {\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    private RspHandle getRspHandle(ProceedingJoinPoint pjp) {\r\n        MethodSignature sign =  (MethodSignature) pjp.getSignature();\r\n        Method method = sign.getMethod();\r\n        return method.getAnnotation(RspHandle.class);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/config/RedisConfig.java",
    "content": "package com.orange.verify.adminweb.config;\n\nimport com.fasterxml.jackson.annotation.JsonAutoDetect;\nimport com.fasterxml.jackson.annotation.PropertyAccessor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.springframework.cache.annotation.CachingConfigurerSupport;\nimport org.springframework.cache.annotation.EnableCaching;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.data.redis.connection.RedisConnectionFactory;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;\nimport org.springframework.data.redis.serializer.RedisSerializer;\nimport org.springframework.data.redis.serializer.StringRedisSerializer;\n\n/**\n * RedisTemple\n */\n@Configuration\n@EnableCaching\npublic class RedisConfig extends CachingConfigurerSupport {\n\n    @Bean\n    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {\n        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();\n        redisTemplate.setConnectionFactory(connectionFactory);\n        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值（默认使用JDK的序列化方式）\n        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);\n        ObjectMapper objectMapper = new ObjectMapper();\n        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);\n        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);\n        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);\n\n        //使用StringRedisSerializer来序列化和反序列化redis的key值\n        RedisSerializer redisSerializer = new StringRedisSerializer();\n        //key\n        redisTemplate.setKeySerializer(redisSerializer);\n        redisTemplate.setHashKeySerializer(redisSerializer);\n        //value\n        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);\n        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);\n\n        redisTemplate.afterPropertiesSet();\n        return redisTemplate;\n\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/config/ShiroConfig.java",
    "content": "package com.orange.verify.adminweb.config;\n\nimport com.orange.verify.adminweb.realm.CustomRealm;\nimport org.apache.shiro.mgt.SecurityManager;\nimport org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;\nimport org.apache.shiro.spring.web.ShiroFilterFactoryBean;\nimport org.apache.shiro.web.mgt.DefaultWebSecurityManager;\nimport org.apache.shiro.web.session.mgt.DefaultWebSessionManager;\nimport org.crazycake.shiro.RedisCacheManager;\nimport org.crazycake.shiro.RedisManager;\nimport org.crazycake.shiro.RedisSessionDAO;\nimport org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n@Configuration\npublic class ShiroConfig {\n\n    @Value(\"${spring.redis.host}\")\n    private String redisHost;\n\n    @Value(\"${spring.redis.port}\")\n    private int redisPort;\n\n    @Value(\"${spring.redis.password}\")\n    private String redisPassword;\n\n    @Value(\"${spring.redis.timeout}\")\n    private int redisTimeout;\n\n    @Value(\"${spring.redis.expire}\")\n    private int redisExpire;\n\n    @Bean\n    public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {\n\n        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();\n\n        // 必须设置 SecurityManager\n        shiroFilterFactoryBean.setSecurityManager(securityManager);\n        //随便写个路径都行，因为开启了注解认证登陆权限了\n        shiroFilterFactoryBean.setLoginUrl(\"/login\");\n        shiroFilterFactoryBean.setUnauthorizedUrl(\"/notRole\");\n\n        // 设置拦截器(不需要设置了，因为开启了注解了)\n        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();\n\n        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);\n        return shiroFilterFactoryBean;\n    }\n\n    /**\n     *  开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证\n     * 配置以下两个bean(DefaultAdvisorAutoProxyCreator和AuthorizationAttributeSourceAdvisor)即可实现此功能\n     * @return\n     */\n    @Bean\n    public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){\n        DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();\n        advisorAutoProxyCreator.setProxyTargetClass(true);\n        return advisorAutoProxyCreator;\n    }\n\n    /**\n     * 开启aop注解支持\n     * @param securityManager\n     * @return\n     */\n    @Bean\n    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {\n        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();\n        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);\n        return authorizationAttributeSourceAdvisor;\n    }\n\n    /**\n     * 注入 securityManager\n     */\n    @Bean\n    public SecurityManager securityManager() {\n        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();\n        // 设置realm.\n        securityManager.setRealm(customRealm());\n\n        securityManager.setCacheManager(cacheManager());\n\n        securityManager.setSessionManager(sessionManager());\n\n        return securityManager;\n    }\n\n    public RedisCacheManager cacheManager() {\n        RedisCacheManager redisCacheManager = new RedisCacheManager();\n        redisCacheManager.setRedisManager(redisManager());\n        return redisCacheManager;\n    }\n\n    public RedisManager redisManager() {\n\n        RedisManager redisManager = new RedisManager();\n        redisManager.setExpire(redisExpire);\n        redisManager.setHost(redisHost);\n        redisManager.setPassword(redisPassword);\n        redisManager.setTimeout(redisTimeout);\n        redisManager.setPort(redisPort);\n\n        return redisManager;\n    }\n\n    @Bean\n    public DefaultWebSessionManager sessionManager() {\n        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();\n        sessionManager.setSessionDAO(redisSessionDAO());\n        return sessionManager;\n    }\n\n    @Bean\n    public RedisSessionDAO redisSessionDAO() {\n        RedisSessionDAO redisSessionDAO = new RedisSessionDAO();\n        redisSessionDAO.setRedisManager(redisManager());\n        return redisSessionDAO;\n    }\n\n    /**\n     * 自定义身份认证 realm;\n     */\n    @Bean\n    public CustomRealm customRealm() {\n        return new CustomRealm();\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/config/ShiroFilterConfig.java",
    "content": "package com.orange.verify.adminweb.config;\n\nimport com.orange.verify.adminweb.model.Response;\nimport com.orange.verify.adminweb.model.ResponseCode;\nimport org.apache.shiro.authc.AuthenticationException;\nimport org.apache.shiro.authz.AuthorizationException;\nimport org.apache.shiro.authz.UnauthenticatedException;\nimport org.apache.shiro.authz.UnauthorizedException;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\n/**\n * 全局拦截 异常\n * @author Orange\n * @date 2018/11/22\n */\n@ControllerAdvice\npublic class ShiroFilterConfig {\n\n    /**\n     * 登录认证异常\n     */\n    @ExceptionHandler({ UnauthenticatedException.class, AuthenticationException.class })\n    @ResponseBody\n    public Response authenticationException(HttpServletRequest request, HttpServletResponse response) {\n        return Response.build(ResponseCode.NOT_LOGIN);\n    }\n\n    /**\n     * 权限异常\n     */\n    @ExceptionHandler({ UnauthorizedException.class, AuthorizationException.class })\n    @ResponseBody\n    public Response authorizationException(HttpServletRequest request, HttpServletResponse response) {\n        return Response.build(ResponseCode.NOT_ROLE);\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/config/ValidatorConfig.java",
    "content": "package com.orange.verify.adminweb.config;\n\nimport org.hibernate.validator.HibernateValidator;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport javax.validation.Validation;\nimport javax.validation.Validator;\nimport javax.validation.ValidatorFactory;\n\n@Configuration\npublic class ValidatorConfig {\n    \n    /**\n     * 配置hibernate Validator为快速失败返回模式\n     */\n    @Bean\n    public Validator validator(){\n        ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )\n                .configure()\n                .addProperty( \"hibernate.validator.fail_fast\", \"true\" )\n                .buildValidatorFactory();\n        Validator validator = validatorFactory.getValidator();\n\n        return validator;\n    }\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/AccountController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport cn.hutool.captcha.CaptchaUtil;\r\nimport cn.hutool.captcha.ICaptcha;\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.adminweb.annotation.ParameterError;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.Account;\r\nimport com.orange.verify.api.sr.ServiceResult;\r\nimport com.orange.verify.api.service.AccountService;\r\nimport com.orange.verify.api.sr.*;\r\nimport com.orange.verify.api.vo.AccountVo;\r\nimport com.orange.verify.api.vo.open.*;\r\nimport com.orange.verify.common.ip.IpUtil;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.validation.BindingResult;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.io.IOException;\r\n\r\n/**\r\n * 客户...\r\n */\r\n@Controller\r\n@RequestMapping(value = \"account\")\r\npublic class AccountController extends BaseController {\r\n\r\n    @Reference\r\n    private AccountService accountService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(AccountVo accountVo, Page page) {\r\n\r\n        Page<AccountVo> cardTypeVoPage = accountService.page(accountVo,page);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,cardTypeVoPage);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"count\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response count() {\r\n\r\n        int count = accountService.count();\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,count);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"blacklist\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response blacklist(String accountId,Integer blacklist) {\r\n\r\n        Account account = new Account();\r\n        account.setId(accountId);\r\n        account.setBlacklist(blacklist);\r\n        boolean b = accountService.updateById(account);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"remove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response remove(String accountId) {\r\n\r\n        boolean b = accountService.removeById(accountId);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @Open(explain = \"获取RSA公钥\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"getPublicKey\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response getPublicKey() {\r\n\r\n        ServiceResult<String> result = accountService.getPublicKey();\r\n        switch (result.getCode()) {\r\n            case AccountImplGetPublicKeyEnum.SUCCESS:\r\n                return Response.build(ResponseCode.QUERY_SUCCESS,ResponseCode.QUERY_SUCCESS.getDesc(),result.getData());\r\n\r\n            case AccountImplGetPublicKeyEnum.KEY_ERROR:\r\n                return Response.build(ResponseCode.KEY_ERROR);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n\r\n    }\r\n\r\n    @RequestMapping(value = \"getVerificationCode\",method = RequestMethod.GET)\r\n    public void getVerificationCode(AccountVerificationCodeVo accountVerificationCodeVo,HttpServletResponse response) {\r\n\r\n        ICaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 6, 20);\r\n\r\n        try {\r\n            if (accountVerificationCodeVo == null) {\r\n                accountVerificationCodeVo = new AccountVerificationCodeVo();\r\n            }\r\n            accountVerificationCodeVo.setPublicKey(accountVerificationCodeVo.getPublicKey()\r\n                    .replaceAll(\" \",\"+\"));\r\n            accountVerificationCodeVo.setCode(captcha.getCode());\r\n            accountService.saveVerificationCode(accountVerificationCodeVo);\r\n            captcha.write(response.getOutputStream());\r\n        } catch (IOException e) {\r\n        }\r\n    }\r\n\r\n    @Open(explain = \"账号注册\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"register\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response register(@Validated AccountRegisterVo accountRegisterVo, BindingResult result,\r\n                             HttpServletRequest request) throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        accountRegisterVo.setPublicKey(accountRegisterVo.getPublicKey().replaceAll(\" \",\"+\"));\r\n        accountRegisterVo.setPassword(accountRegisterVo.getPassword().replaceAll(\" \",\"+\"));\r\n        accountRegisterVo.setCode(accountRegisterVo.getCode().replaceAll(\" \",\"+\"));\r\n\r\n        accountRegisterVo.setIp(IpUtil.getIp(request));\r\n\r\n        ServiceResult register = accountService.register(accountRegisterVo);\r\n        switch (register.getCode()) {\r\n            case AccountImplRegisterEnum.REGISTER_SUCCESS:\r\n                return Response.build(ResponseCode.REGISTER_SUCCESS);\r\n\r\n            case AccountImplRegisterEnum.REGISTER_ERROR:\r\n                return Response.build(ResponseCode.REGISTER_ERROR);\r\n\r\n            case AccountImplRegisterEnum.KEY_EMPTY:\r\n                return Response.build(ResponseCode.KEY_EMPTY);\r\n\r\n            case AccountImplRegisterEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n\r\n            case AccountImplRegisterEnum.BAIDU_API_ERROR:\r\n                return Response.build(ResponseCode.BAIDU_API_ERROR);\r\n\r\n            case AccountImplRegisterEnum.KEY_ERROR:\r\n                return Response.build(ResponseCode.KEY_ERROR);\r\n\r\n            case AccountImplRegisterEnum.ACCOUNT_ALREADY_EXIST:\r\n                return Response.build(ResponseCode.ACCOUNT_ALREADY_EXIST);\r\n\r\n            case AccountImplRegisterEnum.PASSWORD_LENGTH_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_LENGTH_ERROR);\r\n\r\n            case AccountImplRegisterEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE,register.getMsg());\r\n\r\n            case AccountImplRegisterEnum.REGISTER_CLOSE:\r\n                return Response.build(ResponseCode.REGISTER_CLOSE,register.getMsg());\r\n\r\n            case AccountImplRegisterEnum.VC_EMPTY:\r\n                return Response.build(ResponseCode.VC_EMPTY);\r\n\r\n            case AccountImplRegisterEnum.VC_MISMATCHES:\r\n                return Response.build(ResponseCode.VC_MISMATCHES);\r\n\r\n            case AccountImplRegisterEnum.NIMIETY:\r\n                return Response.build(ResponseCode.NIMIETY);\r\n\r\n            case AccountImplRegisterEnum.SERVER_ERROR:\r\n                return Response.build(ResponseCode.SERVER_ERROR);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n\r\n    }\r\n\r\n    @Open(explain = \"账号登陆\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"login\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response login(@Validated AccountLoginVo accountLoginVo, BindingResult result,\r\n                          HttpServletRequest request) throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        accountLoginVo.setPublicKey(accountLoginVo.getPublicKey().replaceAll(\" \",\"+\"));\r\n        accountLoginVo.setPassword(accountLoginVo.getPassword().replaceAll(\" \",\"+\"));\r\n        accountLoginVo.setCode(accountLoginVo.getCode().replaceAll(\" \",\"+\"));\r\n\r\n        accountLoginVo.setIp(IpUtil.getIp(request));\r\n\r\n        ServiceResult login = accountService.login(accountLoginVo);\r\n        switch (login.getCode()) {\r\n            case AccountImplLoginEnum.LOGIN_SUCCESS:\r\n                return Response.build(ResponseCode.LOGIN_SUCCESS);\r\n\r\n            case AccountImplLoginEnum.LOGIN_ERROR:\r\n                return Response.build(ResponseCode.LOGIN_ERROR);\r\n\r\n            case AccountImplLoginEnum.KEY_EMPTY:\r\n                return Response.build(ResponseCode.KEY_EMPTY);\r\n\r\n            case AccountImplLoginEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n\r\n            case AccountImplLoginEnum.KEY_ERROR:\r\n                return Response.build(ResponseCode.KEY_ERROR);\r\n\r\n            case AccountImplLoginEnum.PASSWORD_LENGTH_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_LENGTH_ERROR);\r\n\r\n            case AccountImplLoginEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE,login.getMsg());\r\n\r\n            case AccountImplLoginEnum.ACCOUNT_NOT_BOUND_CARD:\r\n                return Response.build(ResponseCode.ACCOUNT_NOT_BOUND_CARD);\r\n\r\n            case AccountImplLoginEnum.CARD_CLOSURE:\r\n                return Response.build(ResponseCode.CARD_CLOSURE);\r\n\r\n            case AccountImplLoginEnum.CARD_PAST_DUE:\r\n                return Response.build(ResponseCode.CARD_PAST_DUE);\r\n\r\n            case AccountImplLoginEnum.ACCOUNT_BLACKLIST:\r\n                return Response.build(ResponseCode.ACCOUNT_BLACKLIST);\r\n\r\n            case AccountImplLoginEnum.BAIDU_API_ERROR:\r\n                return Response.build(ResponseCode.BAIDU_API_ERROR);\r\n\r\n            case AccountImplLoginEnum.ACCOUNT_EMPTY:\r\n                return Response.build(ResponseCode.ACCOUNT_EMPTY);\r\n\r\n            case AccountImplLoginEnum.PASSWORD_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_ERROR);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n    }\r\n\r\n    @Open(explain = \"绑定卡密\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"bindingCard\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response bindingCard(@Validated AccountBindingCardVo accountBindingCardVo, BindingResult result)\r\n            throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        accountBindingCardVo.setPublicKey(accountBindingCardVo.getPublicKey().replaceAll(\" \",\"+\"));\r\n        accountBindingCardVo.setPassword(accountBindingCardVo.getPassword().replaceAll(\" \",\"+\"));\r\n        accountBindingCardVo.setCode(accountBindingCardVo.getCode().replaceAll(\" \",\"+\"));\r\n\r\n        ServiceResult bindingCard = accountService.bindingCard(accountBindingCardVo);\r\n\r\n        switch (bindingCard.getCode()) {\r\n            case AccountImplBindingCardEnum.BINDING_CARD_SUCCESS:\r\n                return Response.build(ResponseCode.BINDING_CARD_SUCCESS);\r\n\r\n            case AccountImplBindingCardEnum.BINDING_CARD_ERROR:\r\n                return Response.build(ResponseCode.BINDING_CARD_ERROR);\r\n\r\n            case AccountImplBindingCardEnum.KEY_EMPTY:\r\n                return Response.build(ResponseCode.KEY_EMPTY);\r\n\r\n            case AccountImplBindingCardEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n\r\n            case AccountImplBindingCardEnum.KEY_ERROR:\r\n                return Response.build(ResponseCode.KEY_ERROR);\r\n\r\n            case AccountImplBindingCardEnum.PASSWORD_LENGTH_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_LENGTH_ERROR);\r\n\r\n            case AccountImplBindingCardEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE,bindingCard.getMsg());\r\n\r\n            case AccountImplBindingCardEnum.ACCOUNT_EMPTY:\r\n                return Response.build(ResponseCode.ACCOUNT_EMPTY);\r\n\r\n            case AccountImplBindingCardEnum.PASSWORD_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_ERROR);\r\n\r\n            case AccountImplBindingCardEnum.CARD_EMPTY:\r\n                return Response.build(ResponseCode.CARD_EMPTY);\r\n\r\n            case AccountImplBindingCardEnum.ACCOUNT_BLACKLIST:\r\n                return Response.build(ResponseCode.ACCOUNT_BLACKLIST);\r\n\r\n            case AccountImplBindingCardEnum.CARD_USE:\r\n                return Response.build(ResponseCode.CARD_USE);\r\n\r\n            case AccountImplBindingCardEnum.CARD_CLOSURE:\r\n                return Response.build(ResponseCode.CARD_CLOSURE);\r\n\r\n            case AccountImplBindingCardEnum.SOFT_INCONSISTENCY:\r\n                return Response.build(ResponseCode.SOFT_INCONSISTENCY);\r\n\r\n            case AccountImplBindingCardEnum.SOFT_FREE:\r\n                return Response.build(ResponseCode.SOFT_FREE);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n    }\r\n\r\n    @Open(explain = \"机器绑定\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"bindingCode\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response bindingCode(@Validated AccountBindingCodeVo accountBindingCodeVo, BindingResult result)\r\n            throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        accountBindingCodeVo.setPublicKey(accountBindingCodeVo.getPublicKey().replaceAll(\" \",\"+\"));\r\n        accountBindingCodeVo.setPassword(accountBindingCodeVo.getPassword().replaceAll(\" \",\"+\"));\r\n        accountBindingCodeVo.setCode(accountBindingCodeVo.getCode().replaceAll(\" \",\"+\"));\r\n\r\n        ServiceResult bindingCode = accountService.bindingCode(accountBindingCodeVo);\r\n        switch (bindingCode.getCode()) {\r\n            case AccountImplBindingCodeEnum.BINDING_CODE_SUCCESS:\r\n                return Response.build(ResponseCode.BINDING_CODE_SUCCESS);\r\n\r\n            case AccountImplBindingCodeEnum.BINDING_CODE_ERROR:\r\n                return Response.build(ResponseCode.BINDING_CODE_ERROR);\r\n\r\n            case AccountImplBindingCodeEnum.KEY_EMPTY:\r\n                return Response.build(ResponseCode.KEY_EMPTY);\r\n\r\n            case AccountImplBindingCodeEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n\r\n            case AccountImplBindingCodeEnum.KEY_ERROR:\r\n                return Response.build(ResponseCode.KEY_ERROR);\r\n\r\n            case AccountImplBindingCodeEnum.PASSWORD_LENGTH_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_LENGTH_ERROR);\r\n\r\n            case AccountImplBindingCodeEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE,bindingCode.getMsg());\r\n\r\n            case AccountImplBindingCodeEnum.ACCOUNT_EMPTY:\r\n                return Response.build(ResponseCode.ACCOUNT_EMPTY);\r\n\r\n            case AccountImplBindingCodeEnum.SOFT_NO_CHANGE:\r\n                return Response.build(ResponseCode.SOFT_NO_CHANGE);\r\n\r\n            case AccountImplBindingCodeEnum.ACCOUNT_BLACKLIST:\r\n                return Response.build(ResponseCode.ACCOUNT_BLACKLIST);\r\n\r\n            case AccountImplBindingCodeEnum.PASSWORD_ERROR:\r\n                return Response.build(ResponseCode.PASSWORD_ERROR);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n    }\r\n\r\n    @Open(explain = \"修改密码\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"updatePassword\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response updatePassword(@Validated AccountUpdatePasswordVo accountUpdatePasswordVo, BindingResult result)\r\n            throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        ServiceResult bindingCode = accountService.updatePassword(accountUpdatePasswordVo);\r\n        switch (bindingCode.getCode()) {\r\n            case AccountImplUpdatePasswordEnum.UPDATE_PASSWORD_SUCCESS:\r\n                return Response.build(ResponseCode.UPDATE_PASSWORD_SUCCESS);\r\n\r\n            case AccountImplUpdatePasswordEnum.UPDATE_PASSWORD_ERROR:\r\n                return Response.build(ResponseCode.UPDATE_PASSWORD_ERROR);\r\n\r\n            case AccountImplUpdatePasswordEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n\r\n            case AccountImplUpdatePasswordEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE);\r\n\r\n            case AccountImplUpdatePasswordEnum.ACCOUNT_EMPTY:\r\n                return Response.build(ResponseCode.ACCOUNT_EMPTY);\r\n\r\n            case AccountImplUpdatePasswordEnum.ACCOUNT_BLACKLIST:\r\n                return Response.build(ResponseCode.ACCOUNT_BLACKLIST);\r\n\r\n            case AccountImplUpdatePasswordEnum.SECURITY_CODE_ERROR:\r\n                return Response.build(ResponseCode.SECURITY_CODE_ERROR);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/AccountLoginLogController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.service.AccountLoginLogService;\r\nimport com.orange.verify.api.vo.AccountLoginLogVo;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 客户登陆日志\r\n */\r\n@Controller\r\n@RequestMapping(value = \"accountLoginLog\")\r\npublic class AccountLoginLogController extends BaseController {\r\n\r\n    @Reference\r\n    private AccountLoginLogService accountLoginLogService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"getBeforeData\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response getBeforeData(String softId) {\r\n\r\n        List<String> beforeData = accountLoginLogService.getBeforeData(softId);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,beforeData);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(AccountLoginLogVo accountLoginLog, Page page) {\r\n\r\n        Page<AccountLoginLogVo> accountLoginLogVoPage = accountLoginLogService.page(accountLoginLog, page);\r\n\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,accountLoginLogVoPage);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/AccountRegisterLogController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.AccountRegisterLog;\r\nimport com.orange.verify.api.service.AccountRegisterLogService;\r\nimport com.orange.verify.api.vo.AccountRegisterLogVo;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 客户注册日志\r\n */\r\n@Controller\r\n@RequestMapping(value = \"accountRegisterLog\")\r\npublic class AccountRegisterLogController {\r\n\r\n    @Reference\r\n    private AccountRegisterLogService accountRegisterLogService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"getBeforeData\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response getBeforeData(String softId) {\r\n\r\n        List<String> beforeData = accountRegisterLogService.getBeforeData(softId);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,beforeData);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(AccountRegisterLog accountRegisterLog, Page page) {\r\n\r\n        Page<AccountRegisterLogVo> accountLoginLogVoPage = accountRegisterLogService.page(accountRegisterLog,page);\r\n\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,accountLoginLogVoPage);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/BaiduMapApiController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.BaiduMapApi;\r\nimport com.orange.verify.api.service.BaiduMapApiService;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 百度 地理 配置\r\n */\r\n@Controller\r\n@RequestMapping(value = \"baiduMapApi\")\r\npublic class BaiduMapApiController {\r\n\r\n    @Reference\r\n    private BaiduMapApiService baiduMapApiService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"single\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response single() {\r\n\r\n        List<BaiduMapApi> list = baiduMapApiService.list();\r\n        if (list == null || list.size() == 0) {\r\n            return Response.build(ResponseCode.EMPTY);\r\n        }\r\n\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,list.get(0));\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(BaiduMapApi baiduMapApi) {\r\n\r\n        boolean b = baiduMapApiService.create(baiduMapApi);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"update\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response update(BaiduMapApi baiduMapApi) {\r\n\r\n        boolean b = baiduMapApiService.updateById(baiduMapApi);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/BaseController.java",
    "content": "package com.orange.verify.adminweb.controller;\n\nimport com.orange.verify.adminweb.annotation.ParameterError;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.validation.BindingResult;\n\n@Controller\npublic class BaseController {\n\n    public void parametric(BindingResult result) throws ParameterError {\n        if(result.hasErrors()){\n            String defaultMessage = result.getAllErrors().get(0).getDefaultMessage();\n            throw new ParameterError(defaultMessage);\n        }\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/CardController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport cn.hutool.core.util.StrUtil;\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.Card;\r\nimport com.orange.verify.api.service.CardService;\r\nimport com.orange.verify.api.vo.CardVo;\r\nimport com.orange.verify.api.vo.open.CardTimeLimitVo;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 卡密\r\n */\r\n@Controller\r\n@RequestMapping(value = \"card\")\r\npublic class CardController {\r\n\r\n    @Reference\r\n    private CardService cardService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(CardVo cardVo, Page page) {\r\n\r\n        Page<CardVo> cardVoPage = cardService.page(cardVo,page);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,cardVoPage);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"count\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response count() {\r\n\r\n        int count = cardService.count();\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,count);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(Card card,Integer count) {\r\n\r\n        if (count > 100) {\r\n            return Response.build(ResponseCode.PRODUCTION_TOO_MUCH);\r\n        }\r\n\r\n        cardService.saveLogic(card,count);\r\n\r\n        return Response.success();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"closure\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response closure(String cardId,Integer closure) {\r\n\r\n        Card card = new Card();\r\n        card.setId(cardId);\r\n        card.setClosure(closure);\r\n        boolean b = cardService.updateById(card);\r\n\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"sellStatus\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response sellStatus(String cardId,Integer sellStatus) {\r\n\r\n        Card card = new Card();\r\n        card.setId(cardId);\r\n        card.setSellStatus(sellStatus);\r\n        boolean b = cardService.updateById(card);\r\n\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"sell\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response sell(@RequestBody List<String> sell) {\r\n\r\n        cardService.sell(sell);\r\n\r\n        return Response.success();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"batchRemove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response batchRemove(@RequestBody List<String> cardList) {\r\n\r\n        cardService.batchRemove(cardList);\r\n\r\n        return Response.success();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"remove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response remove(String cardId) {\r\n\r\n        boolean b = cardService.removeById(cardId);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @Open(explain = \"用户-查看卡密什么时候开始用的，什么时候结束的\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"getCardTimeLimit\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response getCardTimeLimit(String username,String password,String softId) {\r\n\r\n        if (StrUtil.hasEmpty(username,password,softId)) {\r\n            return Response.build(ResponseCode.PARAMETER_ERROR);\r\n        }\r\n\r\n        CardTimeLimitVo cardTimeLimit = cardService.getCardTimeLimit(username, password, softId);\r\n        if (cardTimeLimit == null) {\r\n            return Response.build(ResponseCode.CARD_EMPTY);\r\n        }\r\n\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,cardTimeLimit);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/CardTypeController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.CardType;\r\nimport com.orange.verify.api.service.CardTypeService;\r\nimport com.orange.verify.api.vo.CardTypeVo;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 卡类\r\n */\r\n@Controller\r\n@RequestMapping(value = \"cardType\")\r\npublic class CardTypeController {\r\n\r\n    @Reference\r\n    private CardTypeService cardTypeService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(CardType cardType, Page page) {\r\n\r\n        Page<CardTypeVo> cardTypeVoPage = cardTypeService.page(cardType,page);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,cardTypeVoPage);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"list\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response list() {\r\n\r\n        List<CardType> list = cardTypeService.list();\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,list);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"single\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response single(String cardTypeId) {\r\n\r\n        CardType cardType = cardTypeService.getById(cardTypeId);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,cardType);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(CardType cardType) {\r\n\r\n        boolean b = cardTypeService.save(cardType);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"update\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response update(CardType cardType) {\r\n\r\n        boolean b = cardTypeService.updateById(cardType);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"remove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response remove(String cardTypeId) {\r\n\r\n        boolean b = cardTypeService.removeById(cardTypeId);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/EmailAccountController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.EmailAccount;\r\nimport com.orange.verify.api.service.EmailAccountService;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 邮箱账户\r\n */\r\n@Controller\r\n@RequestMapping(value = \"emailAccount\")\r\npublic class EmailAccountController {\r\n\r\n    @Reference\r\n    private EmailAccountService emailAccountService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"list\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response list() {\r\n\r\n        List<EmailAccount> list = emailAccountService.getList();\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,list);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"single\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response single(String emailAccountId) {\r\n\r\n        EmailAccount emailAccount = emailAccountService.getById(emailAccountId);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,emailAccount);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(EmailAccount emailAccount) {\r\n\r\n        boolean b = emailAccountService.save(emailAccount);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"update\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response update(EmailAccount emailAccount) {\r\n\r\n        boolean b = emailAccountService.updateById(emailAccount);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"remove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response remove(String emailAccountId) {\r\n\r\n        boolean b = emailAccountService.removeById(emailAccountId);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n}\r\n\r\n\r\n\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/InterfaceManagementController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.InterfaceManagement;\r\nimport com.orange.verify.api.service.InterfaceManagementService;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 接口管理\r\n */\r\n@Controller\r\n@RequestMapping(value = \"interfaceManagement\")\r\npublic class InterfaceManagementController {\r\n\r\n    @Reference\r\n    private InterfaceManagementService interfaceManagementService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"list\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response list() {\r\n\r\n        try {\r\n            List<InterfaceManagement> all = interfaceManagementService.getAll();\r\n            return Response.build(ResponseCode.QUERY_SUCCESS,all);\r\n        } catch (Exception e) {\r\n            return Response.build(ResponseCode.QUERY_ERROR);\r\n        }\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"getSingle\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response getSingle(String key) {\r\n\r\n        try {\r\n            InterfaceManagement interfaceManagement = interfaceManagementService.getSingle(key);\r\n            return Response.build(ResponseCode.QUERY_SUCCESS,interfaceManagement);\r\n        } catch (Exception e) {\r\n            return Response.build(ResponseCode.QUERY_ERROR);\r\n        }\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"closeInterface\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response closeInterface(String key,Integer on) {\r\n\r\n        try {\r\n\r\n            if (on < 0 || on > 1) {\r\n                return Response.build(ResponseCode.PARAMETER_ERROR);\r\n            }\r\n\r\n            interfaceManagementService.closeInterface(key,on);\r\n            return Response.build(ResponseCode.SUCCESS);\r\n        } catch (Exception e) {\r\n            return Response.build(ResponseCode.ERROR);\r\n        }\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"ipHandle\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response ipHandle(String key,Integer on) {\r\n\r\n        try {\r\n\r\n            if (on < 0 || on > 1) {\r\n                return Response.build(ResponseCode.PARAMETER_ERROR);\r\n            }\r\n\r\n            interfaceManagementService.ipHandle(key,on);\r\n            return Response.build(ResponseCode.SUCCESS);\r\n        } catch (Exception e) {\r\n            return Response.build(ResponseCode.ERROR);\r\n        }\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"update\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response update(InterfaceManagement interfaceManagement) {\r\n\r\n        try {\r\n\r\n            interfaceManagementService.update(interfaceManagement);\r\n            return Response.build(ResponseCode.SUCCESS);\r\n        } catch (Exception e) {\r\n            return Response.build(ResponseCode.ERROR);\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/SoftController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.adminweb.annotation.ParameterError;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.Soft;\r\nimport com.orange.verify.api.sr.ServiceResult;\r\nimport com.orange.verify.api.service.SoftService;\r\nimport com.orange.verify.api.sr.SoftImplGetSoftDescEnum;\r\nimport com.orange.verify.api.vo.SoftVo;\r\nimport com.orange.verify.api.vo.open.SoftGetSoftDescVo;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.validation.BindingResult;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 软件\r\n */\r\n@Controller\r\n@RequestMapping(value = \"soft\")\r\npublic class SoftController extends BaseController {\r\n\r\n    @Reference\r\n    private SoftService softService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(Soft soft, Page page) {\r\n\r\n        Page<SoftVo> softVoPage = softService.page(soft,page);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,softVoPage);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"count\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response count() {\r\n\r\n        int count = softService.count();\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,count);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"list\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response list() {\r\n\r\n        List<Soft> list = softService.list();\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,list);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"single\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response single(String softId) {\r\n\r\n        Soft soft = softService.getById(softId);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,soft);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(Soft soft) {\r\n\r\n        boolean b = softService.save(soft);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"update\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response update(Soft soft) {\r\n\r\n        boolean b = softService.updateById(soft);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"remove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response remove(String softId) {\r\n\r\n        boolean b = softService.removeById(softId);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @Open(explain = \"获取软件信息\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"getSoftDesc\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response getSoftDesc(@Validated SoftGetSoftDescVo accountGetSoftDescVo, BindingResult result)\r\n            throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        ServiceResult<SoftGetSoftDescVo> getSoftDesc = softService.getSoftDesc(accountGetSoftDescVo);\r\n        switch (getSoftDesc.getCode()) {\r\n            case SoftImplGetSoftDescEnum.SUCCESS:\r\n                return Response.build(ResponseCode.QUERY_SUCCESS,getSoftDesc.getData());\r\n\r\n            case SoftImplGetSoftDescEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE);\r\n\r\n            case SoftImplGetSoftDescEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n                \r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n    }\r\n\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/SoftLeaveMessageController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.adminweb.annotation.ParameterError;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.sr.ServiceResult;\r\nimport com.orange.verify.api.service.SoftLeaveMessageService;\r\nimport com.orange.verify.api.sr.SoftLeaveMessageImplCreateEnum;\r\nimport com.orange.verify.api.vo.SoftLeaveMessageVo;\r\nimport com.orange.verify.api.vo.open.SoftLeaveMeesageSubmitVo;\r\nimport com.orange.verify.common.ip.IpUtil;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.validation.BindingResult;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\n\r\n/**\r\n * 软件留言\r\n */\r\n@Controller\r\n@RequestMapping(value = \"softLeaveMessage\")\r\npublic class SoftLeaveMessageController extends BaseController {\r\n\r\n    @Reference\r\n    private SoftLeaveMessageService softLeaveMessageService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"page\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response page(SoftLeaveMessageVo softLeaveMessageVo, Page page) {\r\n\r\n        Page<SoftLeaveMessageVo> softLeaveMessagePage = softLeaveMessageService.page(softLeaveMessageVo, page);\r\n\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,softLeaveMessagePage);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"remove\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response remove(String softLeaveMessageId) {\r\n\r\n        boolean b = softLeaveMessageService.removeById(softLeaveMessageId);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @Open(explain = \"用户提交留言反馈\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(@Validated SoftLeaveMeesageSubmitVo softLeaveMeesageSubmitVo, BindingResult result,\r\n                           HttpServletRequest request) throws ParameterError {\r\n\r\n        super.parametric(result);\r\n\r\n        softLeaveMeesageSubmitVo.setIp(IpUtil.getIp(request));\r\n\r\n        ServiceResult serviceResult = softLeaveMessageService.create(softLeaveMeesageSubmitVo);\r\n        switch (serviceResult.getCode()) {\r\n            case SoftLeaveMessageImplCreateEnum.LEAVE_MESSAGE_SEND_SUCCESS:\r\n                return Response.build(ResponseCode.LEAVE_MESSAGE_SEND_SUCCESS);\r\n\r\n            case SoftLeaveMessageImplCreateEnum.SOFT_EMPTY:\r\n                return Response.build(ResponseCode.SOFT_EMPTY);\r\n\r\n            case SoftLeaveMessageImplCreateEnum.SOFT_CLOSE:\r\n                return Response.build(ResponseCode.SOFT_CLOSE);\r\n\r\n            case SoftLeaveMessageImplCreateEnum.BAIDU_API_ERROR:\r\n                return Response.build(ResponseCode.BAIDU_API_ERROR);\r\n\r\n            case SoftLeaveMessageImplCreateEnum.LEAVE_MESSAGE_SEND_ERROR:\r\n                return Response.build(ResponseCode.LEAVE_MESSAGE_SEND_ERROR);\r\n\r\n            default:\r\n                return Response.build(ResponseCode.UNKNOWN_ERROR);\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/SoftVersionsController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport cn.hutool.core.util.StrUtil;\r\nimport com.alibaba.dubbo.config.annotation.Reference;\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.SoftVersions;\r\nimport com.orange.verify.api.service.SoftVersionsService;\r\nimport com.orange.verify.api.vo.SoftVersionsVo;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\n/**\r\n * 软件版本\r\n */\r\n@Controller\r\n@RequestMapping(value = \"softVersions\")\r\npublic class SoftVersionsController {\r\n\r\n    @Reference\r\n    private SoftVersionsService softVersionsService;\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"getSingleBySoftId\",method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public Response getSingleBySoftId(String softId) {\r\n\r\n        SoftVersionsVo singleBySoftId = softVersionsService.getSingleBySoftId(softId);\r\n        return Response.build(ResponseCode.QUERY_SUCCESS, singleBySoftId);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"create\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response create(SoftVersions softVersions) {\r\n\r\n        boolean b = softVersionsService.saveLogic(softVersions);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"update\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response update(SoftVersions softVersions) {\r\n\r\n        boolean b = softVersionsService.updateById(softVersions);\r\n        if (b == true) {\r\n            return Response.success();\r\n        }\r\n        return Response.error();\r\n    }\r\n\r\n\r\n    @Open(explain = \"获取软件版本信息\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"getVersions\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response getVersions(String softId) {\r\n\r\n        if (StrUtil.hasEmpty(softId)) {\r\n            return Response.build(ResponseCode.PARAMETER_ERROR,\"软件id为空\");\r\n        }\r\n\r\n        com.orange.verify.api.vo.open.SoftVersionsVo versions = softVersionsService.getVersions(softId);\r\n        if (versions == null) {\r\n            return Response.build(ResponseCode.VERSIONS_EMPTY);\r\n        }\r\n\r\n        return Response.build(ResponseCode.QUERY_SUCCESS,versions);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/controller/UserController.java",
    "content": "package com.orange.verify.adminweb.controller;\r\n\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.adminweb.annotation.RspHandle;\r\nimport com.orange.verify.adminweb.model.Response;\r\nimport com.orange.verify.adminweb.model.ResponseCode;\r\nimport com.orange.verify.api.bean.User;\r\nimport org.apache.shiro.SecurityUtils;\r\nimport org.apache.shiro.authc.UsernamePasswordToken;\r\nimport org.apache.shiro.authz.annotation.RequiresUser;\r\nimport org.apache.shiro.subject.Subject;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\n/**\r\n * 系统管理账号\r\n */\r\n@Controller\r\n@RequestMapping(value = \"user\")\r\npublic class UserController {\r\n\r\n    @Open(explain = \"系统管理员登陆\")\r\n    @RspHandle\r\n    @RequestMapping(value = \"login\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response login(@RequestBody User user) {\r\n\r\n        try {\r\n            // 从SecurityUtils里边创建一个 subject\r\n            Subject subject = SecurityUtils.getSubject();\r\n            // 在认证提交前准备 token（令牌）\r\n            UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());\r\n            // 执行认证登陆\r\n            subject.login(token);\r\n        }catch (Exception e) {\r\n            return Response.build(ResponseCode.LOGIN_ERROR);\r\n        }\r\n\r\n        return Response.build(ResponseCode.LOGIN_SUCCESS);\r\n    }\r\n\r\n    @RspHandle\r\n    @RequiresUser\r\n    @RequestMapping(value = \"logout\",method = RequestMethod.POST)\r\n    @ResponseBody\r\n    public Response logout() {\r\n\r\n        try {\r\n\r\n            Subject subject = SecurityUtils.getSubject();\r\n            subject.logout();\r\n\r\n        }catch (Exception e) {\r\n            return Response.build(ResponseCode.LOGOUT_ERROR);\r\n        }\r\n\r\n        return Response.build(ResponseCode.LOGOUT_SUCCESS);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/model/Response.java",
    "content": "package com.orange.verify.adminweb.model;\n\n/**\n * web专用返回\n * @author Orange\n * @date 2018/10/28\n */\npublic class Response<T> {\n\n    private int code;\n\n    private String msg;\n\n    private T data;\n\n    private long totalTime;\n\n    private Response(ResponseCode responseCode) {\n        this.code = responseCode.getCode();\n        this.msg = responseCode.getDesc();\n    }\n\n    private Response(ResponseCode responseCode,T data) {\n        this.code = responseCode.getCode();\n        this.msg = responseCode.getDesc();\n        this.data = data;\n    }\n\n    private Response(ResponseCode responseCode,String msg) {\n        this.code = responseCode.getCode();\n        this.msg = msg;\n    }\n\n    private Response(ResponseCode responseCode,String msg,T data) {\n        this.code = responseCode.getCode();\n        this.msg = msg;\n        this.data = data;\n    }\n\n    public static Response success() {\n        return new Response(ResponseCode.SUCCESS);\n    }\n    public static Response error() {\n        return new Response(ResponseCode.ERROR);\n    }\n    public static Response build(ResponseCode responseCode) {\n        return new Response(responseCode);\n    }\n    public static<T> Response<T> build(ResponseCode responseCode,T data) {\n        return new Response(responseCode,data);\n    }\n    public static Response build(ResponseCode responseCode,String msg) {\n        return new Response(responseCode,msg);\n    }\n    public static<T> Response<T> build(ResponseCode responseCode,String msg,T data) {\n        return new Response(responseCode,msg,data);\n    }\n\n    public int getCode() {\n        return code;\n    }\n\n    public void setCode(int code) {\n        this.code = code;\n    }\n\n    public String getMsg() {\n        return msg;\n    }\n\n    public void setMsg(String msg) {\n        this.msg = msg;\n    }\n\n    public T getData() {\n        return data;\n    }\n\n    public void setData(T data) {\n        this.data = data;\n    }\n\n    public long getTotalTime() {\n        return totalTime;\n    }\n\n    public void setTotalTime(long totalTime) {\n        this.totalTime = totalTime;\n    }\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/model/ResponseCode.java",
    "content": "package com.orange.verify.adminweb.model;\n\n/**\n * 基础的返回0-100\n * 成功类1xx 单位为百\n * 失败类9xx 单位为百\n * @author Orange\n */\npublic enum ResponseCode {\n\n    //成功...\n    REGISTER_SUCCESS(101,\"注册成功\"),\n\n    LOGIN_SUCCESS(100,\"登陆成功\"),\n\n    BINDING_CARD_SUCCESS(102,\"卡密绑定成功\"),\n\n    BINDING_CODE_SUCCESS(103,\"换绑定成功\"),\n\n    LEAVE_MESSAGE_SEND_SUCCESS(104,\"留言发送成功\"),\n\n    UPDATE_PASSWORD_SUCCESS(105,\"改密成功\"),\n\n    LOGOUT_SUCCESS(106,\"登出成功\"),\n\n\n    //失败\n    UNKNOWN_ERROR(901,\"不好意思，发生了未知错误！\"),\n\n    PARAMETER_ERROR(902,\"提交参数错误，请仔细检查提交参数！\"),\n\n    EMPTY(903,\"无\"),\n\n    PRODUCTION_TOO_MUCH(904,\"生产过多充值卡密\"),\n\n    REGISTER_ERROR(905,\"注册失败\"),\n\n    LOGIN_ERROR(906,\"本软件不支持换机器进行使用\"),\n\n    SOFT_CLOSE(907,\"软件关闭开放使用\"),\n\n    ACCOUNT_BLACKLIST(908,\"此账号已被加入黑名单！\"),\n\n    SOFT_NO_CHANGE(909,\"软件不支持换绑机器\"),\n\n    REGISTER_CLOSE(910,\"注册关闭\"),\n\n    TOO_FAST(911,\"访问过快\"),\n\n    VERSIONS_EMPTY(912,\"版本不存在\"),\n\n    KEY_EMPTY(913,\"钥匙为空，请重启软件重试！\"),\n\n    ACCOUNT_EMPTY(914,\"用户不存在\"),\n\n    CARD_EMPTY(915,\"卡密不存在\"),\n\n    CARD_USE(916,\"卡密已被使用\"),\n\n    CARD_CLOSURE(917,\"卡密已被封停\"),\n\n    CARD_PAST_DUE(918,\"卡密已过期\"),\n\n    KEY_ERROR(919,\"服务器钥匙错误\"),\n\n    ACCOUNT_ALREADY_EXIST(920,\"用户名已存在\"),\n\n    PASSWORD_LENGTH_ERROR(921,\"密码长度是5到10位哟！\"),\n\n    SOFT_EMPTY(922,\"软件不存在\"),\n\n    BAIDU_API_ERROR(923,\"IP错误\"),\n\n    UPDATE_PASSWORD_ERROR(924,\"改密失败\"),\n\n    LOGOUT_ERROR(925,\"登出失败\"),\n\n    SOFT_INCONSISTENCY(926,\"卡密使用绑定软件不一致\"),\n\n    ACCOUNT_NOT_BOUND_CARD(927,\"账号还未绑定卡密，请先充值再使用！\"),\n\n    SECURITY_CODE_ERROR(928,\"安全码错误！\"),\n\n    BINDING_CARD_ERROR(929,\"绑定卡密失败\"),\n\n    PASSWORD_ERROR(930,\"密码错误\"),\n\n    BINDING_CODE_ERROR(931,\"绑定机器失败\"),\n\n    LEAVE_MESSAGE_SEND_ERROR(932,\"留言发送失败\"),\n\n    VC_EMPTY(933,\"验证码过期了，请重新获取验证码\"),\n\n    VC_MISMATCHES(934,\"验证码输入错误\"),\n\n    NIMIETY(935,\"当前注册人数过多，稍后再试！\"),\n\n    SERVER_ERROR(936,\"服务器错误\"),\n\n    SOFT_FREE(937,\"软件是免费的，无需绑定卡密\"),\n\n    INTERFACE_CLOSE(938,\"访问失败，接口已被关闭！\"),\n\n    //基础\n    QUERY_SUCCESS(9,\"查询成功\"),\n    SUCCESS(10,\"操作成功\"),\n    ERROR(11,\"操作失败\"),\n    NOT_LOGIN(12,\"未登录\"),\n    QUERY_ERROR(13,\"查询失败\"),\n    NOT_ROLE(99,\"无角色\");\n\n    private int code;\n    private String desc;\n\n    ResponseCode(int code,String desc){\n        this.code = code;\n        this.desc = desc;\n    }\n\n    public int getCode(){\n        return code;\n    }\n\n    public String getDesc(){\n        return desc;\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/realm/CustomRealm.java",
    "content": "package com.orange.verify.adminweb.realm;\n\nimport com.alibaba.dubbo.config.annotation.Reference;\nimport com.orange.verify.api.service.UserService;\nimport org.apache.shiro.authc.*;\nimport org.apache.shiro.authz.AuthorizationInfo;\nimport org.apache.shiro.authz.SimpleAuthorizationInfo;\nimport org.apache.shiro.realm.AuthorizingRealm;\nimport org.apache.shiro.subject.PrincipalCollection;\nimport org.springframework.stereotype.Component;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n@Component\npublic class CustomRealm extends AuthorizingRealm {\n\n    @Reference\n    private UserService userService;\n\n    /**\n     * 权限\n     */\n    @Override\n    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {\n\n        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();\n        Set<String> set = new HashSet<>();\n        set.add(\"role\");\n        info.addRoles(set);\n        return info;\n    }\n\n    /**\n     * 登陆\n     */\n    @Override\n    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)\n            throws AuthenticationException {\n\n        UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;\n\n        String username = token.getUsername();\n        String password = String.valueOf(token.getPassword());\n\n        int verifyUser = userService.verifyUser(username, password);\n        if (verifyUser > 0) {\n            return new SimpleAuthenticationInfo(username,password,getName());\n        }\n\n        throw new AuthenticationException();\n    }\n    \n}\n"
  },
  {
    "path": "admin-web/src/main/java/com/orange/verify/adminweb/runner/InterfaceRunner.java",
    "content": "package com.orange.verify.adminweb.runner;\r\n\r\nimport cn.hutool.core.util.ClassUtil;\r\nimport com.orange.verify.adminweb.annotation.Open;\r\nimport com.orange.verify.api.bean.InterfaceManagement;\r\nimport com.orange.verify.api.redis.RedisKeyConstant;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.boot.CommandLineRunner;\r\nimport org.springframework.core.annotation.Order;\r\nimport org.springframework.data.redis.core.RedisTemplate;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.lang.reflect.Method;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\n\r\n/**\r\n * 全部开放接口全部统一管理，提供参数配置，系统可以后台可配置\r\n * redis作为存储\r\n * 系统启动后第一时间执行\r\n * @author Orange软件\r\n * @date 2019.3.15\r\n */\r\n@Component\r\n@Order(value = 1)\r\npublic class InterfaceRunner implements CommandLineRunner {\r\n    \r\n    private static final Logger log = LoggerFactory.getLogger(InterfaceRunner.class);\r\n\r\n    @Value(\"${interface.scan.path}\")\r\n    private String interfaceScanPath;\r\n\r\n    @Autowired\r\n    private RedisTemplate<String,Object> template;\r\n\r\n    @Override\r\n    public void run(String... args) throws Exception {\r\n\r\n        log.info(\"正在执行全部接口入存管理\");\r\n\r\n        Map<String,String> productionInterface = productionInterface();\r\n        InterfaceManagement setting = getSetting();\r\n\r\n        for (Map.Entry<String, String> m : productionInterface.entrySet()) {\r\n\r\n            String key = m.getKey();\r\n            String remarks = m.getValue();\r\n\r\n            Boolean hasKey = template.hasKey(key);\r\n            if (hasKey == false) {\r\n                setting.setKey(key);\r\n                setting.setRemarks(remarks);\r\n                template.opsForValue().set(key,setting);\r\n            } else {\r\n                InterfaceManagement o = (InterfaceManagement) template.opsForValue().get(key);\r\n                if (!remarks.equals(o.getRemarks())) {\r\n                    setting.setKey(key);\r\n                    setting.setRemarks(remarks);\r\n                    template.opsForValue().set(key,setting);\r\n                }\r\n            }\r\n\r\n        }\r\n\r\n        Set<String> keys = template.keys(RedisKeyConstant.OPEN_INTERFACE + \"*\");\r\n        for (String key : keys) {\r\n            int l = 0;\r\n            for (Map.Entry<String, String> m : productionInterface.entrySet()) {\r\n                if (m.getKey().equals(key)) {\r\n                    l = 1;\r\n                    break;\r\n                }\r\n            }\r\n            if (l == 0) {\r\n                Boolean delete = template.delete(key);\r\n                if (delete == true) {\r\n                    log.info(\"删除无用(过期)开放接口成功\");\r\n                } else {\r\n                    log.info(\"删除无用(过期)开放接口失败\");\r\n                }\r\n            }\r\n        }\r\n\r\n        log.info(\"执行结束\");\r\n\r\n    }\r\n\r\n    /**\r\n     * 接口地址管理 作为redis键 接口备注作为值\r\n     */\r\n    private Map<String,String> productionInterface() {\r\n\r\n        Map<String,String> map = new HashMap<String,String>();\r\n\r\n        Set<Class<?>> classes = ClassUtil.scanPackage(interfaceScanPath);\r\n\r\n        for (Class c : classes) {\r\n\r\n            Method[] methods = c.getMethods();\r\n\r\n            for (Method method : methods) {\r\n\r\n                Open annotation = method.getAnnotation(Open.class);\r\n                if (annotation != null) {\r\n                    map.put(RedisKeyConstant.OPEN_INTERFACE + c.getName() + \".\" + method.getName(),annotation.explain());\r\n                }\r\n            }\r\n\r\n        }\r\n\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 接口默认控制配置\r\n     * visit 1=可以访问 0=接口关闭\r\n     * ipHandle 1开启ip限流控制 0关闭\r\n     * ipVisits ip访问次数，限制接口在 xx 分钟内容只能访问 xx 次，默认60次\r\n     * ipRedisInterval ip redis缓存多少分钟 默认1分钟\r\n     */\r\n    private InterfaceManagement getSetting() {\r\n\r\n        InterfaceManagement interfaceManagement = new InterfaceManagement();\r\n        interfaceManagement.setVisit(1);\r\n        interfaceManagement.setIpHandle(1);\r\n        interfaceManagement.setIpVisits(60L);\r\n        interfaceManagement.setIpRedisInterval(1L);\r\n\r\n        return interfaceManagement;\r\n    }\r\n\r\n\r\n}\r\n"
  },
  {
    "path": "admin-web/src/main/resources/application.properties",
    "content": "server.port = 8038\r\nserver.servlet.path=/verify\r\n\r\ninterface.scan.path = com.orange.verify.adminweb.controller \r\n\r\ndubbo.application.name= com-orange-verify-client\r\n\r\ndubbo.consumer.timeout= 10000\r\ndubbo.consumer.retries= 0\r\n\r\ndubbo.protocol.port=8039\r\ndubbo.registry.id = com-orange-verify\r\ndubbo.registry.address = zookeeper://localhost:2181?client=curator\r\n\r\ndubbo.application.qosEnable=false\r\n\r\nlogging.config=classpath:logback-spring.xml\r\n\r\nspring.redis.host=localhost\r\nspring.redis.port=6379\r\nspring.redis.password=\r\nspring.redis.timeout=5000\r\nspring.redis.expire=1800\r\nspring.redis.database=0  \r\nspring.redis.pool.max.active=8  \r\nspring.redis.pool.max.wait=-1  \r\nspring.redis.pool.max.idle=8  \r\nspring.redis.pool.min.idle=0  \r\n\r\nspring.redis.jedis.max-active=8  \r\nspring.redis.jedis.max-wait=-1  \r\nspring.redis.jedis.max-idle=8  \r\nspring.redis.jedis.min-idle=0  \r\n"
  },
  {
    "path": "admin-web/src/main/resources/logback-spring.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<configuration scan=\"true\" scanPeriod=\"60 seconds\" debug=\"false\">\n    <contextName>logback</contextName>\n\n    <appender name=\"console\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <appender name=\"file\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <File>log/adminweb.log</File>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>log/adminweb.%d.log</fileNamePattern>\n            <maxHistory>20</maxHistory>\n        </rollingPolicy>\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <root level=\"info\">\n        <appender-ref ref=\"console\" />\n        <appender-ref ref=\"file\" />\n    </root>\n\n    <logger name=\"com.orange.verify.adminweb\" level=\"debug\"/>\n\n</configuration>"
  },
  {
    "path": "admin-web/src/test/java/com/orange/verify/adminweb/AdminWebApplicationTests.java",
    "content": "package com.orange.verify.adminweb;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.test.context.junit4.SpringRunner;\n\nimport java.util.concurrent.TimeUnit;\n\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class AdminWebApplicationTests {\n\n    @Autowired\n    private RedisTemplate redisTemplate;\n\n    @Test\n    public void contextLoads() throws InterruptedException {\n\n        long count = redisTemplate.opsForValue().increment(\"1\", 1);\n        if (count == 1) {\n            redisTemplate.expire(\"1\", 3, TimeUnit.MINUTES);\n        }\n\n        Thread.sleep(1000);\n        redisTemplate.opsForValue().increment(\"1\", 1);\n        Thread.sleep(5000);\n        redisTemplate.opsForValue().increment(\"1\", 1);\n\n        Object o = redisTemplate.opsForValue().get(\"1\");\n        System.out.println(o);\n\n        Long expire = redisTemplate.getExpire(\"1\");\n        System.out.println(expire);\n\n    }\n\n}\n"
  },
  {
    "path": "admin-web/src/test/java/com/orange/verify/adminweb/Time.java",
    "content": "package com.orange.verify.adminweb;\n\npublic class Time {\n\n    public static void main(String[] args) {\n\n        Long y = 100L;\n\n        double p = y / 60L;\n\n        System.out.println(p);\n\n    }\n\n}\n"
  },
  {
    "path": "admin-web-page/.babelrc",
    "content": "{\n  \"presets\": [\n    [\"env\", {\n      \"modules\": false,\n      \"targets\": {\n        \"browsers\": [\"> 1%\", \"last 2 versions\", \"not ie <= 8\"]\n      }\n    }],\n    \"stage-2\"\n  ],\n  \"plugins\":[\"transform-vue-jsx\", \"transform-runtime\"]\n}\n"
  },
  {
    "path": "admin-web-page/.editorconfig",
    "content": "# http://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "admin-web-page/.eslintignore",
    "content": "build/*.js\nconfig/*.js\nsrc/assets\n"
  },
  {
    "path": "admin-web-page/.eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  parserOptions: {\n    parser: 'babel-eslint',\n    sourceType: 'module'\n  },\n  env: {\n    browser: true,\n    node: true,\n    es6: true,\n  },\n  extends: ['plugin:vue/recommended', 'eslint:recommended'],\n\n  // add your custom rules here\n  //it is base on https://github.com/vuejs/eslint-config-vue\n  rules: {\n    \"vue/max-attributes-per-line\": [2, {\n      \"singleline\": 10,\n      \"multiline\": {\n        \"max\": 1,\n        \"allowFirstLine\": false\n      }\n    }],\n    \"vue/name-property-casing\": [\"error\", \"PascalCase\"],\n    'accessor-pairs': 2,\n    'arrow-spacing': [2, {\n      'before': true,\n      'after': true\n    }],\n    'block-spacing': [2, 'always'],\n    'brace-style': [2, '1tbs', {\n      'allowSingleLine': true\n    }],\n    'camelcase': [0, {\n      'properties': 'always'\n    }],\n    'comma-dangle': [2, 'never'],\n    'comma-spacing': [2, {\n      'before': false,\n      'after': true\n    }],\n    'comma-style': [2, 'last'],\n    'constructor-super': 2,\n    'curly': [2, 'multi-line'],\n    'dot-location': [2, 'property'],\n    'eol-last': 2,\n    'eqeqeq': [2, 'allow-null'],\n    'generator-star-spacing': [2, {\n      'before': true,\n      'after': true\n    }],\n    'handle-callback-err': [2, '^(err|error)$'],\n    'indent': [2, 2, {\n      'SwitchCase': 1\n    }],\n    'jsx-quotes': [2, 'prefer-single'],\n    'key-spacing': [2, {\n      'beforeColon': false,\n      'afterColon': true\n    }],\n    'keyword-spacing': [2, {\n      'before': true,\n      'after': true\n    }],\n    'new-cap': [2, {\n      'newIsCap': true,\n      'capIsNew': false\n    }],\n    'new-parens': 2,\n    'no-array-constructor': 2,\n    'no-caller': 2,\n    'no-console': 'off',\n    'no-class-assign': 2,\n    'no-cond-assign': 2,\n    'no-const-assign': 2,\n    'no-control-regex': 2,\n    'no-delete-var': 2,\n    'no-dupe-args': 2,\n    'no-dupe-class-members': 2,\n    'no-dupe-keys': 2,\n    'no-duplicate-case': 2,\n    'no-empty-character-class': 2,\n    'no-empty-pattern': 2,\n    'no-eval': 2,\n    'no-ex-assign': 2,\n    'no-extend-native': 2,\n    'no-extra-bind': 2,\n    'no-extra-boolean-cast': 2,\n    'no-extra-parens': [2, 'functions'],\n    'no-fallthrough': 2,\n    'no-floating-decimal': 2,\n    'no-func-assign': 2,\n    'no-implied-eval': 2,\n    'no-inner-declarations': [2, 'functions'],\n    'no-invalid-regexp': 2,\n    'no-irregular-whitespace': 2,\n    'no-iterator': 2,\n    'no-label-var': 2,\n    'no-labels': [2, {\n      'allowLoop': false,\n      'allowSwitch': false\n    }],\n    'no-lone-blocks': 2,\n    'no-mixed-spaces-and-tabs': 2,\n    'no-multi-spaces': 2,\n    'no-multi-str': 2,\n    'no-multiple-empty-lines': [2, {\n      'max': 1\n    }],\n    'no-native-reassign': 2,\n    'no-negated-in-lhs': 2,\n    'no-new-object': 2,\n    'no-new-require': 2,\n    'no-new-symbol': 2,\n    'no-new-wrappers': 2,\n    'no-obj-calls': 2,\n    'no-octal': 2,\n    'no-octal-escape': 2,\n    'no-path-concat': 2,\n    'no-proto': 2,\n    'no-redeclare': 2,\n    'no-regex-spaces': 2,\n    'no-return-assign': [2, 'except-parens'],\n    'no-self-assign': 2,\n    'no-self-compare': 2,\n    'no-sequences': 2,\n    'no-shadow-restricted-names': 2,\n    'no-spaced-func': 2,\n    'no-sparse-arrays': 2,\n    'no-this-before-super': 2,\n    'no-throw-literal': 2,\n    'no-trailing-spaces': 2,\n    'no-undef': 2,\n    'no-undef-init': 2,\n    'no-unexpected-multiline': 2,\n    'no-unmodified-loop-condition': 2,\n    'no-unneeded-ternary': [2, {\n      'defaultAssignment': false\n    }],\n    'no-unreachable': 2,\n    'no-unsafe-finally': 2,\n    'no-unused-vars': [2, {\n      'vars': 'all',\n      'args': 'none'\n    }],\n    'no-useless-call': 2,\n    'no-useless-computed-key': 2,\n    'no-useless-constructor': 2,\n    'no-useless-escape': 0,\n    'no-whitespace-before-property': 2,\n    'no-with': 2,\n    'one-var': [2, {\n      'initialized': 'never'\n    }],\n    'operator-linebreak': [2, 'after', {\n      'overrides': {\n        '?': 'before',\n        ':': 'before'\n      }\n    }],\n    'padded-blocks': [2, 'never'],\n    'quotes': [2, 'single', {\n      'avoidEscape': true,\n      'allowTemplateLiterals': true\n    }],\n    'semi': [2, 'never'],\n    'semi-spacing': [2, {\n      'before': false,\n      'after': true\n    }],\n    'space-before-blocks': [2, 'always'],\n    'space-before-function-paren': [2, 'never'],\n    'space-in-parens': [2, 'never'],\n    'space-infix-ops': 2,\n    'space-unary-ops': [2, {\n      'words': true,\n      'nonwords': false\n    }],\n    'spaced-comment': [2, 'always', {\n      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']\n    }],\n    'template-curly-spacing': [2, 'never'],\n    'use-isnan': 2,\n    'valid-typeof': 2,\n    'wrap-iife': [2, 'any'],\n    'yield-star-spacing': [2, 'both'],\n    'yoda': [2, 'never'],\n    'prefer-const': 2,\n    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,\n    'object-curly-spacing': [2, 'always', {\n      objectsInObjects: false\n    }],\n    'array-bracket-spacing': [2, 'never']\n  }\n}\n\n"
  },
  {
    "path": "admin-web-page/.gitignore",
    "content": ".DS_Store\nnode_modules/\ndist/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npackage-lock.json\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n"
  },
  {
    "path": "admin-web-page/.postcssrc.js",
    "content": "// https://github.com/michael-ciniawsky/postcss-load-config\n\nmodule.exports = {\n  \"plugins\": {\n    \"postcss-import\": {},\n    \"postcss-url\": {},\n    // to edit target browsers: use \"browserslist\" field in package.json\n    \"autoprefixer\": {}\n  }\n}\n"
  },
  {
    "path": "admin-web-page/.travis.yml",
    "content": "language: node_js\nnode_js: stable\nscript: npm run test\nnotifications:\n  email: false\n"
  },
  {
    "path": "admin-web-page/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2017-present PanJiaChen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "admin-web-page/README-zh.md",
    "content": "\n## verify 后台管理系统页面\n\n```bash\n\n# Install dependencies\nnpm install\n\n# 建议不要用cnpm  安装有各种诡异的bug 可以通过如下操作解决npm速度慢的问题\nnpm install --registry=https://registry.npm.taobao.org\n\n# Serve with hot reload at localhost:9528\nnpm run dev\n\n# Build for production with minification\nnpm run build\n\n# Build for production and view the bundle analyzer report\nnpm run build --report\n```\n"
  },
  {
    "path": "admin-web-page/build/build.js",
    "content": "'use strict'\nrequire('./check-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nconst ora = require('ora')\nconst rm = require('rimraf')\nconst path = require('path')\nconst chalk = require('chalk')\nconst webpack = require('webpack')\nconst config = require('../config')\nconst webpackConfig = require('./webpack.prod.conf')\n\nconst spinner = ora('building for production...')\nspinner.start()\n\nrm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {\n  if (err) throw err\n  webpack(webpackConfig, (err, stats) => {\n    spinner.stop()\n    if (err) throw err\n    process.stdout.write(\n      stats.toString({\n        colors: true,\n        modules: false,\n        children: false,\n        chunks: false,\n        chunkModules: false\n      }) + '\\n\\n'\n    )\n\n    if (stats.hasErrors()) {\n      console.log(chalk.red('  Build failed with errors.\\n'))\n      process.exit(1)\n    }\n\n    console.log(chalk.cyan('  Build complete.\\n'))\n    console.log(\n      chalk.yellow(\n        '  Tip: built files are meant to be served over an HTTP server.\\n' +\n          \"  Opening index.html over file:// won't work.\\n\"\n      )\n    )\n  })\n})\n"
  },
  {
    "path": "admin-web-page/build/check-versions.js",
    "content": "'use strict'\nconst chalk = require('chalk')\nconst semver = require('semver')\nconst packageConfig = require('../package.json')\nconst shell = require('shelljs')\n\nfunction exec(cmd) {\n  return require('child_process')\n    .execSync(cmd)\n    .toString()\n    .trim()\n}\n\nconst versionRequirements = [\n  {\n    name: 'node',\n    currentVersion: semver.clean(process.version),\n    versionRequirement: packageConfig.engines.node\n  }\n]\n\nif (shell.which('npm')) {\n  versionRequirements.push({\n    name: 'npm',\n    currentVersion: exec('npm --version'),\n    versionRequirement: packageConfig.engines.npm\n  })\n}\n\nmodule.exports = function() {\n  const warnings = []\n\n  for (let i = 0; i < versionRequirements.length; i++) {\n    const mod = versionRequirements[i]\n\n    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {\n      warnings.push(\n        mod.name +\n          ': ' +\n          chalk.red(mod.currentVersion) +\n          ' should be ' +\n          chalk.green(mod.versionRequirement)\n      )\n    }\n  }\n\n  if (warnings.length) {\n    console.log('')\n    console.log(\n      chalk.yellow(\n        'To use this template, you must update following to modules:'\n      )\n    )\n    console.log()\n\n    for (let i = 0; i < warnings.length; i++) {\n      const warning = warnings[i]\n      console.log('  ' + warning)\n    }\n\n    console.log()\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "admin-web-page/build/utils.js",
    "content": "'use strict'\nconst path = require('path')\nconst config = require('../config')\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin')\nconst packageConfig = require('../package.json')\n\nexports.assetsPath = function(_path) {\n  const assetsSubDirectory =\n    process.env.NODE_ENV === 'production'\n      ? config.build.assetsSubDirectory\n      : config.dev.assetsSubDirectory\n\n  return path.posix.join(assetsSubDirectory, _path)\n}\n\nexports.cssLoaders = function(options) {\n  options = options || {}\n\n  const cssLoader = {\n    loader: 'css-loader',\n    options: {\n      sourceMap: options.sourceMap\n    }\n  }\n\n  const postcssLoader = {\n    loader: 'postcss-loader',\n    options: {\n      sourceMap: options.sourceMap\n    }\n  }\n\n  // generate loader string to be used with extract text plugin\n  function generateLoaders(loader, loaderOptions) {\n    const loaders = []\n\n    // Extract CSS when that option is specified\n    // (which is the case during production build)\n    if (options.extract) {\n      loaders.push(MiniCssExtractPlugin.loader)\n    } else {\n      loaders.push('vue-style-loader')\n    }\n\n    loaders.push(cssLoader)\n\n    if (options.usePostCSS) {\n      loaders.push(postcssLoader)\n    }\n\n    if (loader) {\n      loaders.push({\n        loader: loader + '-loader',\n        options: Object.assign({}, loaderOptions, {\n          sourceMap: options.sourceMap\n        })\n      })\n    }\n\n    return loaders\n  }\n  // https://vue-loader.vuejs.org/en/configurations/extract-css.html\n  return {\n    css: generateLoaders(),\n    postcss: generateLoaders(),\n    less: generateLoaders('less'),\n    sass: generateLoaders('sass', {\n      indentedSyntax: true\n    }),\n    scss: generateLoaders('sass'),\n    stylus: generateLoaders('stylus'),\n    styl: generateLoaders('stylus')\n  }\n}\n\n// Generate loaders for standalone style files (outside of .vue)\nexports.styleLoaders = function(options) {\n  const output = []\n  const loaders = exports.cssLoaders(options)\n\n  for (const extension in loaders) {\n    const loader = loaders[extension]\n    output.push({\n      test: new RegExp('\\\\.' + extension + '$'),\n      use: loader\n    })\n  }\n\n  return output\n}\n\nexports.createNotifierCallback = () => {\n  const notifier = require('node-notifier')\n\n  return (severity, errors) => {\n    if (severity !== 'error') return\n\n    const error = errors[0]\n    const filename = error.file && error.file.split('!').pop()\n\n    notifier.notify({\n      title: packageConfig.name,\n      message: severity + ': ' + error.name,\n      subtitle: filename || '',\n      icon: path.join(__dirname, 'logo.png')\n    })\n  }\n}\n"
  },
  {
    "path": "admin-web-page/build/vue-loader.conf.js",
    "content": "'use strict'\n\nmodule.exports = {\n  //You can set the vue-loader configuration by yourself.\n}\n"
  },
  {
    "path": "admin-web-page/build/webpack.base.conf.js",
    "content": "'use strict'\nconst path = require('path')\nconst utils = require('./utils')\nconst config = require('../config')\nconst { VueLoaderPlugin } = require('vue-loader')\nconst vueLoaderConfig = require('./vue-loader.conf')\n\nfunction resolve(dir) {\n  return path.join(__dirname, '..', dir)\n}\n\nconst createLintingRule = () => ({\n  test: /\\.(js|vue)$/,\n  loader: 'eslint-loader',\n  enforce: 'pre',\n  include: [resolve('src'), resolve('test')],\n  options: {\n    formatter: require('eslint-friendly-formatter'),\n    emitWarning: !config.dev.showEslintErrorsInOverlay\n  }\n})\n\nmodule.exports = {\n  context: path.resolve(__dirname, '../'),\n  entry: {\n    app: './src/main.js'\n  },\n  output: {\n    path: config.build.assetsRoot,\n    filename: '[name].js',\n    publicPath:\n      process.env.NODE_ENV === 'production'\n        ? config.build.assetsPublicPath\n        : config.dev.assetsPublicPath\n  },\n  resolve: {\n    extensions: ['.js', '.vue', '.json'],\n    alias: {\n      '@': resolve('src')\n    }\n  },\n  module: {\n    rules: [\n      ...(config.dev.useEslint ? [] : []),\n      {\n        test: /\\.vue$/,\n        loader: 'vue-loader',\n        options: vueLoaderConfig\n      },\n      {\n        test: /\\.js$/,\n        loader: 'babel-loader',\n        include: [\n          resolve('src'),\n          resolve('test'),\n          resolve('node_modules/webpack-dev-server/client')\n        ]\n      },\n      {\n        test: /\\.svg$/,\n        loader: 'svg-sprite-loader',\n        include: [resolve('src/icons')],\n        options: {\n          symbolId: 'icon-[name]'\n        }\n      },\n      {\n        test: /\\.(png|jpe?g|gif|svg)(\\?.*)?$/,\n        loader: 'url-loader',\n        exclude: [resolve('src/icons')],\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('img/[name].[hash:7].[ext]')\n        }\n      },\n      {\n        test: /\\.(mp4|webm|ogg|mp3|wav|flac|aac)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('media/[name].[hash:7].[ext]')\n        }\n      },\n      {\n        test: /\\.(woff2?|eot|ttf|otf)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')\n        }\n      }\n    ]\n  },\n  plugins: [new VueLoaderPlugin()],\n  node: {\n    // prevent webpack from injecting useless setImmediate polyfill because Vue\n    // source contains it (although only uses it if it's native).\n    setImmediate: false,\n    // prevent webpack from injecting mocks to Node native modules\n    // that does not make sense for the client\n    dgram: 'empty',\n    fs: 'empty',\n    net: 'empty',\n    tls: 'empty',\n    child_process: 'empty'\n  }\n}\n"
  },
  {
    "path": "admin-web-page/build/webpack.dev.conf.js",
    "content": "'use strict'\nconst path = require('path')\nconst utils = require('./utils')\nconst webpack = require('webpack')\nconst config = require('../config')\nconst merge = require('webpack-merge')\nconst baseWebpackConfig = require('./webpack.base.conf')\nconst HtmlWebpackPlugin = require('html-webpack-plugin')\nconst FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')\nconst portfinder = require('portfinder')\n\nfunction resolve(dir) {\n  return path.join(__dirname, '..', dir)\n}\n\nconst HOST = process.env.HOST\nconst PORT = process.env.PORT && Number(process.env.PORT)\n\nconst devWebpackConfig = merge(baseWebpackConfig, {\n  mode: 'development',\n  module: {\n    rules: utils.styleLoaders({\n      sourceMap: config.dev.cssSourceMap,\n      usePostCSS: true\n    })\n  },\n  // cheap-module-eval-source-map is faster for development\n  devtool: config.dev.devtool,\n\n  // these devServer options should be customized in /config/index.js\n  devServer: {\n    clientLogLevel: 'warning',\n    historyApiFallback: true,\n    hot: true,\n    compress: true,\n    host: HOST || config.dev.host,\n    port: PORT || config.dev.port,\n    open: config.dev.autoOpenBrowser,\n    overlay: config.dev.errorOverlay\n      ? { warnings: false, errors: true }\n      : false,\n    publicPath: config.dev.assetsPublicPath,\n    proxy: config.dev.proxyTable,\n    quiet: true, // necessary for FriendlyErrorsPlugin\n    watchOptions: {\n      poll: config.dev.poll\n    }\n  },\n  plugins: [\n    new webpack.DefinePlugin({\n      'process.env': require('../config/dev.env')\n    }),\n    new webpack.HotModuleReplacementPlugin(),\n    // https://github.com/ampedandwired/html-webpack-plugin\n    new HtmlWebpackPlugin({\n      filename: 'index.html',\n      template: 'index.html',\n      inject: true,\n      favicon: resolve('favicon.ico'),\n      title: 'vue-admin-template'\n    })\n  ]\n})\n\nmodule.exports = new Promise((resolve, reject) => {\n  portfinder.basePort = process.env.PORT || config.dev.port\n  portfinder.getPort((err, port) => {\n    if (err) {\n      reject(err)\n    } else {\n      // publish the new Port, necessary for e2e tests\n      process.env.PORT = port\n      // add port to devServer config\n      devWebpackConfig.devServer.port = port\n\n      // Add FriendlyErrorsPlugin\n      devWebpackConfig.plugins.push(\n        new FriendlyErrorsPlugin({\n          compilationSuccessInfo: {\n            messages: [\n              `Your application is running here: http://${\n                devWebpackConfig.devServer.host\n              }:${port}`\n            ]\n          },\n          onErrors: config.dev.notifyOnErrors\n            ? utils.createNotifierCallback()\n            : undefined\n        })\n      )\n\n      resolve(devWebpackConfig)\n    }\n  })\n})\n"
  },
  {
    "path": "admin-web-page/build/webpack.prod.conf.js",
    "content": "'use strict'\nconst path = require('path')\nconst utils = require('./utils')\nconst webpack = require('webpack')\nconst config = require('../config')\nconst merge = require('webpack-merge')\nconst baseWebpackConfig = require('./webpack.base.conf')\nconst CopyWebpackPlugin = require('copy-webpack-plugin')\nconst HtmlWebpackPlugin = require('html-webpack-plugin')\nconst ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin')\nconst OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')\nconst UglifyJsPlugin = require('uglifyjs-webpack-plugin')\n\nfunction resolve(dir) {\n  return path.join(__dirname, '..', dir)\n}\n\nconst env = require('../config/prod.env')\n\n// For NamedChunksPlugin\nconst seen = new Set()\nconst nameLength = 4\n\nconst webpackConfig = merge(baseWebpackConfig, {\n  mode: 'production',\n  module: {\n    rules: utils.styleLoaders({\n      sourceMap: config.build.productionSourceMap,\n      extract: true,\n      usePostCSS: true\n    })\n  },\n  devtool: config.build.productionSourceMap ? config.build.devtool : false,\n  output: {\n    path: config.build.assetsRoot,\n    filename: utils.assetsPath('js/[name].[chunkhash:8].js'),\n    chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')\n  },\n  plugins: [\n    // http://vuejs.github.io/vue-loader/en/workflow/production.html\n    new webpack.DefinePlugin({\n      'process.env': env\n    }),\n    // extract css into its own file\n    new MiniCssExtractPlugin({\n      filename: utils.assetsPath('css/[name].[contenthash:8].css'),\n      chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')\n    }),\n    // generate dist index.html with correct asset hash for caching.\n    // you can customize output by editing /index.html\n    // see https://github.com/ampedandwired/html-webpack-plugin\n    new HtmlWebpackPlugin({\n      filename: config.build.index,\n      template: 'index.html',\n      inject: true,\n      favicon: resolve('favicon.ico'),\n      title: 'vue-admin-template',\n      minify: {\n        removeComments: true,\n        collapseWhitespace: true,\n        removeAttributeQuotes: true\n        // more options:\n        // https://github.com/kangax/html-minifier#options-quick-reference\n      }\n      // default sort mode uses toposort which cannot handle cyclic deps\n      // in certain cases, and in webpack 4, chunk order in HTML doesn't\n      // matter anyway\n    }),\n    new ScriptExtHtmlWebpackPlugin({\n      //`runtime` must same as runtimeChunk name. default is `runtime`\n      inline: /runtime\\..*\\.js$/\n    }),\n    // keep chunk.id stable when chunk has no name\n    new webpack.NamedChunksPlugin(chunk => {\n      if (chunk.name) {\n        return chunk.name\n      }\n      const modules = Array.from(chunk.modulesIterable)\n      if (modules.length > 1) {\n        const hash = require('hash-sum')\n        const joinedHash = hash(modules.map(m => m.id).join('_'))\n        let len = nameLength\n        while (seen.has(joinedHash.substr(0, len))) len++\n        seen.add(joinedHash.substr(0, len))\n        return `chunk-${joinedHash.substr(0, len)}`\n      } else {\n        return modules[0].id\n      }\n    }),\n    // keep module.id stable when vender modules does not change\n    new webpack.HashedModuleIdsPlugin(),\n    // copy custom static assets\n    new CopyWebpackPlugin([\n      {\n        from: path.resolve(__dirname, '../static'),\n        to: config.build.assetsSubDirectory,\n        ignore: ['.*']\n      }\n    ])\n  ],\n  optimization: {\n    splitChunks: {\n      chunks: 'all',\n      cacheGroups: {\n        libs: {\n          name: 'chunk-libs',\n          test: /[\\\\/]node_modules[\\\\/]/,\n          priority: 10,\n          chunks: 'initial' // 只打包初始时依赖的第三方\n        },\n        elementUI: {\n          name: 'chunk-elementUI', // 单独将 elementUI 拆包\n          priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app\n          test: /[\\\\/]node_modules[\\\\/]element-ui[\\\\/]/\n        }\n      }\n    },\n    runtimeChunk: 'single',\n    minimizer: [\n      new UglifyJsPlugin({\n        uglifyOptions: {\n          mangle: {\n            safari10: true\n          }\n        },\n        sourceMap: config.build.productionSourceMap,\n        cache: true,\n        parallel: true\n      }),\n      // Compress extracted CSS. We are using this plugin so that possible\n      // duplicated CSS from different components can be deduped.\n      new OptimizeCSSAssetsPlugin()\n    ]\n  }\n})\n\nif (config.build.productionGzip) {\n  const CompressionWebpackPlugin = require('compression-webpack-plugin')\n\n  webpackConfig.plugins.push(\n    new CompressionWebpackPlugin({\n      asset: '[path].gz[query]',\n      algorithm: 'gzip',\n      test: new RegExp(\n        '\\\\.(' + config.build.productionGzipExtensions.join('|') + ')$'\n      ),\n      threshold: 10240,\n      minRatio: 0.8\n    })\n  )\n}\n\nif (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {\n  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')\n    .BundleAnalyzerPlugin\n\n  if (config.build.bundleAnalyzerReport) {\n    webpackConfig.plugins.push(\n      new BundleAnalyzerPlugin({\n        analyzerPort: 8080,\n        generateStatsFile: false\n      })\n    )\n  }\n\n  if (config.build.generateAnalyzerReport) {\n    webpackConfig.plugins.push(\n      new BundleAnalyzerPlugin({\n        analyzerMode: 'static',\n        reportFilename: 'bundle-report.html',\n        openAnalyzer: false\n      })\n    )\n  }\n}\n\nmodule.exports = webpackConfig\n"
  },
  {
    "path": "admin-web-page/config/dev.env.js",
    "content": "'use strict'\nconst merge = require('webpack-merge')\nconst prodEnv = require('./prod.env')\n\nmodule.exports = merge(prodEnv, {\n  NODE_ENV: '\"development\"',\n  BASE_API: '\"http://localhost:80/verify\"',\n})\n"
  },
  {
    "path": "admin-web-page/config/index.js",
    "content": "'use strict'\n// Template version: 1.2.6\n// see http://vuejs-templates.github.io/webpack for documentation.\n\nconst path = require('path')\n\nmodule.exports = {\n  dev: {\n    // Paths\n    assetsSubDirectory: 'static',\n    assetsPublicPath: '/',\n    proxyTable: {\n      '/': {\n        target: 'http://localhost:8038',   // 需要请求的地址\n        ws: false,\n        changeOrigin: true,  // 是否跨域\n        pathRewrite: {\n          '^/': '/'  // 替换target中的请求地址，也就是说，在请求的时候，url用'/proxy'代替'http://ip.taobao.com'\n        }\n      }\n    },\n\n    // Various Dev Server settings\n    host: '0.0.0.0', // can be overwritten by process.env.HOST\n    port: 80, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined\n    autoOpenBrowser: false,\n    errorOverlay: true,\n    notifyOnErrors: false,\n    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-\n\n    // Use Eslint Loader?\n    // If true, your code will be linted during bundling and\n    // linting errors and warnings will be shown in the console.\n    useEslint: true,\n    // If true, eslint errors and warnings will also be shown in the error overlay\n    // in the browser.\n    showEslintErrorsInOverlay: false,\n\n    /**\n     * Source Maps\n     */\n\n    // https://webpack.js.org/configuration/devtool/#development\n    devtool: 'cheap-source-map',\n\n    // CSS Sourcemaps off by default because relative paths are \"buggy\"\n    // with this option, according to the CSS-Loader README\n    // (https://github.com/webpack/css-loader#sourcemaps)\n    // In our experience, they generally work as expected,\n    // just be aware of this issue when enabling this option.\n    cssSourceMap: false\n  },\n\n  build: {\n    // Template for index.html\n    index: path.resolve(__dirname, '../dist/index.html'),\n\n    // Paths\n    assetsRoot: path.resolve(__dirname, '../dist'),\n    assetsSubDirectory: 'static',\n\n    /**\n     * You can set by youself according to actual condition\n     * You will need to set this if you plan to deploy your site under a sub path,\n     * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,\n     * then assetsPublicPath should be set to \"/bar/\".\n     * In most cases please use '/' !!!\n     */\n    assetsPublicPath: '/',\n\n    /**\n     * Source Maps\n     */\n\n    productionSourceMap: false,\n    // https://webpack.js.org/configuration/devtool/#production\n    devtool: 'source-map',\n\n    // Gzip off by default as many popular static hosts such as\n    // Surge or Netlify already gzip all static assets for you.\n    // Before setting to `true`, make sure to:\n    // npm install --save-dev compression-webpack-plugin\n    productionGzip: false,\n    productionGzipExtensions: ['js', 'css'],\n\n    // Run the build command with an extra argument to\n    // View the bundle analyzer report after build finishes:\n    // `npm run build --report`\n    // Set to `true` or `false` to always turn it on or off\n    bundleAnalyzerReport: process.env.npm_config_report || false,\n\n    // `npm run build:prod --generate_report`\n    generateAnalyzerReport: process.env.npm_config_generate_report || false\n  }\n}\n"
  },
  {
    "path": "admin-web-page/config/prod.env.js",
    "content": "'use strict'\nmodule.exports = {\n  NODE_ENV: '\"production\"',\n  BASE_API: '\"http://verifyopen.wywxy.top:80/verify\"',\n}\n"
  },
  {
    "path": "admin-web-page/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n    <title>网络验证系统 -Orange Verify</title>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n  </body>\n</html>\n"
  },
  {
    "path": "admin-web-page/package.json",
    "content": "{\n  \"name\": \"admin-web-page\",\n  \"version\": \"3.8.0\",\n  \"license\": \"MIT\",\n  \"description\": \"A vue admin template with Element UI & axios & iconfont & permission control & lint\",\n  \"author\": \"Pan <panfree23@gmail.com>\",\n  \"scripts\": {\n    \"dev\": \"webpack-dev-server --inline --progress --config build/webpack.dev.conf.js\",\n    \"start\": \"npm run dev\",\n    \"build\": \"node build/build.js\",\n    \"build:report\": \"npm_config_report=true npm run build\",\n    \"lint\": \"eslint --ext .js,.vue src\",\n    \"test\": \"npm run lint\",\n    \"svgo\": \"svgo -f src/icons/svg --config=src/icons/svgo.yml\"\n  },\n  \"dependencies\": {\n    \"axios\": \"0.18.0\",\n    \"element-ui\": \"2.4.6\",\n    \"js-cookie\": \"2.2.0\",\n    \"normalize.css\": \"7.0.0\",\n    \"nprogress\": \"0.2.0\",\n    \"qs\": \"^6.6.0\",\n    \"vue\": \"2.5.17\",\n    \"vue-router\": \"3.0.1\",\n    \"vuex\": \"3.0.1\"\n  },\n  \"devDependencies\": {\n    \"autoprefixer\": \"8.5.0\",\n    \"babel-core\": \"6.26.0\",\n    \"babel-eslint\": \"8.2.6\",\n    \"babel-helper-vue-jsx-merge-props\": \"2.0.3\",\n    \"babel-loader\": \"7.1.5\",\n    \"babel-plugin-syntax-jsx\": \"6.18.0\",\n    \"babel-plugin-transform-runtime\": \"6.23.0\",\n    \"babel-plugin-transform-vue-jsx\": \"3.7.0\",\n    \"babel-preset-env\": \"1.7.0\",\n    \"babel-preset-stage-2\": \"6.24.1\",\n    \"chalk\": \"2.4.1\",\n    \"copy-webpack-plugin\": \"4.5.2\",\n    \"css-loader\": \"1.0.0\",\n    \"echarts\": \"^4.2.0-rc.2\",\n    \"eslint\": \"4.19.1\",\n    \"eslint-friendly-formatter\": \"4.0.1\",\n    \"eslint-loader\": \"2.0.0\",\n    \"eslint-plugin-vue\": \"4.7.1\",\n    \"eventsource-polyfill\": \"0.9.6\",\n    \"file-loader\": \"1.1.11\",\n    \"friendly-errors-webpack-plugin\": \"1.7.0\",\n    \"html-webpack-plugin\": \"4.0.0-alpha\",\n    \"mini-css-extract-plugin\": \"0.4.1\",\n    \"node-notifier\": \"5.2.1\",\n    \"node-sass\": \"^4.7.2\",\n    \"optimize-css-assets-webpack-plugin\": \"5.0.0\",\n    \"ora\": \"3.0.0\",\n    \"path-to-regexp\": \"2.4.0\",\n    \"portfinder\": \"1.0.16\",\n    \"postcss-import\": \"12.0.0\",\n    \"postcss-loader\": \"2.1.6\",\n    \"postcss-url\": \"7.3.2\",\n    \"rimraf\": \"2.6.2\",\n    \"sass-loader\": \"7.0.3\",\n    \"script-ext-html-webpack-plugin\": \"2.0.1\",\n    \"semver\": \"5.5.0\",\n    \"shelljs\": \"0.8.2\",\n    \"svg-sprite-loader\": \"3.8.0\",\n    \"svgo\": \"1.0.5\",\n    \"uglifyjs-webpack-plugin\": \"1.2.7\",\n    \"url-loader\": \"1.0.1\",\n    \"vue-loader\": \"15.3.0\",\n    \"vue-style-loader\": \"4.1.2\",\n    \"vue-template-compiler\": \"2.5.17\",\n    \"webpack\": \"4.16.5\",\n    \"webpack-bundle-analyzer\": \"2.13.1\",\n    \"webpack-cli\": \"3.1.0\",\n    \"webpack-dev-server\": \"3.1.5\",\n    \"webpack-merge\": \"4.1.4\"\n  },\n  \"engines\": {\n    \"node\": \">= 6.0.0\",\n    \"npm\": \">= 3.0.0\"\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\",\n    \"not ie <= 8\"\n  ]\n}\n"
  },
  {
    "path": "admin-web-page/src/App.vue",
    "content": "<template>\n  <div id=\"app\">\n    <router-view/>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'App'\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/api/login.js",
    "content": "import request from '@/utils/request'\n\nexport function login(username, password) {\n  return request({\n    url: '/user/login',\n    method: 'post',\n    data: {\n      username,\n      password\n    }\n  })\n}\n\nexport function getInfo(token) {\n  return request({\n    url: '/user/info',\n    method: 'get',\n    params: { token }\n  })\n}\n\nexport function logout() {\n  return request({\n    url: '/user/logout',\n    method: 'post'\n  })\n}\n"
  },
  {
    "path": "admin-web-page/src/api/table.js",
    "content": "import request from '@/utils/request'\n\nexport function getList(params) {\n  return request({\n    url: '/table/list',\n    method: 'get',\n    params\n  })\n}\n"
  },
  {
    "path": "admin-web-page/src/components/Breadcrumb/index.vue",
    "content": "<template>\n  <el-breadcrumb class=\"app-breadcrumb\" separator=\"/\">\n    <transition-group name=\"breadcrumb\">\n      <el-breadcrumb-item v-for=\"(item,index) in levelList\" v-if=\"item.meta.title\" :key=\"item.path\">\n        <span v-if=\"item.redirect==='noredirect'||index==levelList.length-1\" class=\"no-redirect\">{{ item.meta.title }}</span>\n        <a v-else @click.prevent=\"handleLink(item)\">{{ item.meta.title }}</a>\n      </el-breadcrumb-item>\n    </transition-group>\n  </el-breadcrumb>\n</template>\n\n<script>\nimport pathToRegexp from 'path-to-regexp'\n\nexport default {\n  data() {\n    return {\n      levelList: null\n    }\n  },\n  watch: {\n    $route() {\n      this.getBreadcrumb()\n    }\n  },\n  created() {\n    this.getBreadcrumb()\n  },\n  methods: {\n    getBreadcrumb() {\n      let matched = this.$route.matched.filter(item => {\n        if (item.name) {\n          return true\n        }\n      })\n      const first = matched[0]\n      if (first && first.name !== 'dashboard') {\n        matched = [{ path: '/dashboard', meta: { title: '首页' }}].concat(matched)\n      }\n      this.levelList = matched\n    },\n    pathCompile(path) {\n      // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561\n      const { params } = this.$route\n      var toPath = pathToRegexp.compile(path)\n      return toPath(params)\n    },\n    handleLink(item) {\n      const { redirect, path } = item\n      if (redirect) {\n        this.$router.push(redirect)\n        return\n      }\n      this.$router.push(this.pathCompile(path))\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n  .app-breadcrumb.el-breadcrumb {\n    display: inline-block;\n    font-size: 14px;\n    line-height: 50px;\n    margin-left: 10px;\n    .no-redirect {\n      color: #97a8be;\n      cursor: text;\n    }\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/components/Hamburger/index.vue",
    "content": "<template>\n  <div>\n    <svg\n      :class=\"{'is-active':isActive}\"\n      t=\"1492500959545\"\n      class=\"hamburger\"\n      style=\"\"\n      viewBox=\"0 0 1024 1024\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      p-id=\"1691\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      width=\"64\"\n      height=\"64\"\n      @click=\"toggleClick\">\n      <path\n        d=\"M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z\"\n        p-id=\"1692\" />\n      <path\n        d=\"M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z\"\n        p-id=\"1693\" />\n      <path\n        d=\"M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z\"\n        p-id=\"1694\" />\n    </svg>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'Hamburger',\n  props: {\n    isActive: {\n      type: Boolean,\n      default: false\n    },\n    toggleClick: {\n      type: Function,\n      default: null\n    }\n  }\n}\n</script>\n\n<style scoped>\n.hamburger {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\twidth: 20px;\n\theight: 20px;\n\ttransform: rotate(90deg);\n\ttransition: .38s;\n\ttransform-origin: 50% 50%;\n}\n.hamburger.is-active {\n\ttransform: rotate(0deg);\n}\n</style>\n"
  },
  {
    "path": "admin-web-page/src/components/SvgIcon/index.vue",
    "content": "<template>\n  <svg :class=\"svgClass\" aria-hidden=\"true\">\n    <use :xlink:href=\"iconName\"/>\n  </svg>\n</template>\n\n<script>\nexport default {\n  name: 'SvgIcon',\n  props: {\n    iconClass: {\n      type: String,\n      required: true\n    },\n    className: {\n      type: String,\n      default: ''\n    }\n  },\n  computed: {\n    iconName() {\n      return `#icon-${this.iconClass}`\n    },\n    svgClass() {\n      if (this.className) {\n        return 'svg-icon ' + this.className\n      } else {\n        return 'svg-icon'\n      }\n    }\n  }\n}\n</script>\n\n<style scoped>\n.svg-icon {\n  width: 1em;\n  height: 1em;\n  vertical-align: -0.15em;\n  fill: currentColor;\n  overflow: hidden;\n}\n</style>\n"
  },
  {
    "path": "admin-web-page/src/icons/index.js",
    "content": "import Vue from 'vue'\nimport SvgIcon from '@/components/SvgIcon' // svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nconst req = require.context('./svg', false, /\\.svg$/)\nrequireAll(req)\n"
  },
  {
    "path": "admin-web-page/src/icons/svgo.yml",
    "content": "# replace default config\n\n# multipass: true\n# full: true\n\nplugins:\n\n  # - name\n  #\n  # or:\n  # - name: false\n  # - name: true\n  #\n  # or:\n  # - name:\n  #     param1: 1\n  #     param2: 2\n\n- removeAttrs:\n    attrs:\n      - 'fill'\n      - 'fill-rule'\n"
  },
  {
    "path": "admin-web-page/src/main.js",
    "content": "import Vue from 'vue'\n\nimport qs from 'qs'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport ElementUI from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\nimport locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport router from './router'\nimport store from './store'\n\nimport '@/icons' // icon\nimport '@/permission' // permission control\n\nimport echarts from 'echarts'\n\nVue.prototype.$echarts = echarts\n\nVue.prototype.$qs = qs;\n\nVue.use(ElementUI, { locale })\n\nVue.config.productionTip = false\n\nnew Vue({\n  el: '#app',\n  router,\n  store,\n  render: h => h(App)\n})\n"
  },
  {
    "path": "admin-web-page/src/permission.js",
    "content": "import router from './router'\nimport store from './store'\nimport NProgress from 'nprogress' // Progress 进度条\nimport 'nprogress/nprogress.css'// Progress 进度条样式\nimport { Message } from 'element-ui'\nimport { getToken } from '@/utils/auth' // 验权\n\nconst whiteList = ['/login'] // 不重定向白名单\n\nrouter.beforeEach((to, from, next) => {\n  NProgress.start()\n  if (getToken()) {\n    if (to.path === '/login') {\n      next({ path: '/' })\n      NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n    } else {\n      if (store.getters.roles.length === 0) {\n        store.dispatch('GetInfo').then(res => { // 拉取用户信息\n          next()\n        }).catch((err) => {\n          store.dispatch('FedLogOut').then(() => {\n            Message.error(err || 'Verification failed, please login again')\n            next({ path: '/' })\n          })\n        })\n      } else {\n        next()\n      }\n    }\n  } else {\n    if (whiteList.indexOf(to.path) !== -1) {\n      next()\n    } else {\n      next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页\n      NProgress.done()\n    }\n  }\n})\n\nrouter.afterEach(() => {\n  NProgress.done() // 结束Progress\n})\n"
  },
  {
    "path": "admin-web-page/src/router/index.js",
    "content": "import Vue from 'vue'\nimport Router from 'vue-router'\n\n// in development-env not use lazy-loading, because lazy-loading too many pages will cause webpack hot update too slow. so only in production use lazy-loading;\n// detail: https://panjiachen.github.io/vue-element-admin-site/#/lazy-loading\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '../views/layout/Layout'\n\n/**\n* hidden: true                   if `hidden:true` will not show in the sidebar(default is false)\n* alwaysShow: true               if set true, will always show the root menu, whatever its child routes length\n*                                if not set alwaysShow, only more than one route under the children\n*                                it will becomes nested mode, otherwise not show the root menu\n* redirect: noredirect           if `redirect:noredirect` will no redirect in the breadcrumb\n* name:'router-name'             the name is used by <keep-alive> (must set!!!)\n* meta : {\n    title: 'title'               the name show in submenu and breadcrumb (recommend set)\n    icon: 'svg-name'             the icon show in the sidebar,\n  }\n**/\nexport const constantRouterMap = [\n  { path: '/login', component: () => import('@/views/login/index'), hidden: true },\n  { path: '/404', component: () => import('@/views/404'), hidden: true },\n\n  {\n    path: '/',\n    component: Layout,\n    redirect: '/dashboard',\n    name: 'Dashboard',\n    hidden: true,\n    children: [{\n      path: 'dashboard',\n      component: () => import('@/views/dashboard/index')\n    }]\n  },\n\n  {\n    path: '/interface',\n    component: Layout,\n    alwaysShow: true,\n    name: 'Interface',\n    redirect: 'noredirect',\n    meta: { title: '接口管理', icon: 'eye' },\n    children: [\n      {\n        path: 'interface_list',\n        name: 'InterfaceList',\n        component: () => import('@/views/interface/interface_list'),\n        meta: { title: '接口列表', icon: 'eye' }\n      },\n    ]\n  },\n  {\n    path: '/soft',\n    component: Layout,\n    alwaysShow: true,\n    name: 'Soft',\n    redirect: 'noredirect',\n    meta: { title: '软件管理', icon: 'software' },\n    children: [\n      {\n        path: 'soft_list',\n        name: 'SoftList',\n        component: () => import('@/views/soft/soft_list'),\n        meta: { title: '软件列表', icon: '软件管理' }\n      },\n      {\n        path: 'soft_form',\n        name: 'SoftForm',\n        hidden: true,\n        component: () => import('@/views/soft/soft_form'),\n        meta: { title: '软件操作', icon: 'tree' }\n      },\n      {\n        path: 'soft_versions_form',\n        name: 'SoftVersionsForm',\n        hidden: true,\n        component: () => import('@/views/soft/soft_versions_form'),\n        meta: { title: '版本操作', icon: 'tree' }\n      },\n      {\n        path: 'soft_leave_list',\n        name: 'SoftLeaveList',\n        component: () => import('@/views/soft/soft_leave_list'),\n        meta: { title: '反馈列表', icon: '反馈管理' }\n      },\n    ]\n  },\n  {\n    path: '/log',\n    component: Layout,\n    alwaysShow: true,\n    name: 'Log',\n    redirect: 'noredirect',\n    meta: { title: '日志管理', icon: 'eye' },\n    children: [\n      {\n        path: 'soft_map',\n        name: 'SoftMap',\n        component: () => import('@/views/log/soft_map'),\n        meta: { title: '软件日志', icon: 'eye' }\n      },\n      {\n        path: 'soft_login_log_list',\n        name: 'SoftLoginLogList',\n        component: () => import('@/views/log/soft_login_log_list'),\n        meta: { title: '登陆日志', icon: 'eye' }\n      },\n      {\n        path: 'soft_register_log_list',\n        name: 'SoftRegisterLogList',\n        component: () => import('@/views/log/soft_register_log_list'),\n        meta: { title: '注册日志', icon: 'eye' }\n      },\n    ]\n  },\n  {\n    path: '/card',\n    component: Layout,\n    alwaysShow: true,\n    name: 'Card',\n    redirect: 'noredirect',\n    meta: { title: '充值卡管理', icon: '充值' },\n    children: [\n      {\n        path: 'card_type_list',\n        name: 'CardTypeList',\n        component: () => import('@/views/card/card_type_list'),\n        meta: { title: '卡类列表', icon: '充值kl' }\n      },\n      {\n        path: 'card_type_form',\n        name: 'CardTypeForm',\n        hidden: true,\n        component: () => import('@/views/card/card_type_form'),\n        meta: { title: '卡类操作', icon: '充值kl' }\n      },\n      {\n        path: 'card_list',\n        name: 'CardList',\n        component: () => import('@/views/card/card_list'),\n        meta: { title: '卡密列表', icon: '充值缴费' }\n      },\n      {\n        path: 'card_form',\n        name: 'CardForm',\n        hidden: true,\n        component: () => import('@/views/card/card_form'),\n        meta: { title: '卡密操作', icon: 'table' }\n      },\n    ]\n  },\n\n  {\n    path: '/account',\n    component: Layout,\n    alwaysShow: true,\n    name: 'Account',\n    redirect: 'noredirect',\n    meta: { title: '用户管理', icon: '用户' },\n    children: [\n      {\n        path: 'account_list',\n        name: 'AccountList',\n        component: () => import('@/views/account/account_list'),\n        meta: { title: '用户列表', icon: '用户d' }\n      },\n    ]\n  },\n\n  {\n    path: '/config',\n    component: Layout,\n    alwaysShow: true,\n    name: 'Config',\n    redirect: 'noredirect',\n    meta: { title: '配置管理', icon: '配置' },\n    children: [\n      {\n        path: 'email_account_list',\n        name: 'EmailAccountList',\n        component: () => import('@/views/config/email_account_list'),\n        meta: { title: '邮箱列表', icon: '邮箱' }\n      },\n      {\n        path: 'email_account_form',\n        name: 'EmailAccountForm',\n        hidden: true,\n        component: () => import('@/views/config/email_account_form'),\n        meta: { title: '邮箱操作', icon: 'table' }\n      },\n      {\n        path: 'baidu_map_api_form',\n        name: 'BaiduMapApiForm',\n        component: () => import('@/views/config/baidu_map_api_form'),\n        meta: { title: '百度地理', icon: '地图' }\n      },\n    ]\n  },\n\n  { path: '*', redirect: '/404', hidden: true }\n]\n\nexport default new Router({\n  // mode: 'history', //后端支持可开\n  scrollBehavior: () => ({ y: 0 }),\n  routes: constantRouterMap\n})\n"
  },
  {
    "path": "admin-web-page/src/store/getters.js",
    "content": "const getters = {\n  sidebar: state => state.app.sidebar,\n  device: state => state.app.device,\n  token: state => state.user.token,\n  avatar: state => state.user.avatar,\n  name: state => state.user.name,\n  roles: state => state.user.roles\n}\nexport default getters\n"
  },
  {
    "path": "admin-web-page/src/store/index.js",
    "content": "import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport user from './modules/user'\nimport getters from './getters'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n  modules: {\n    app,\n    user\n  },\n  getters\n})\n\nexport default store\n"
  },
  {
    "path": "admin-web-page/src/store/modules/app.js",
    "content": "import Cookies from 'js-cookie'\n\nconst app = {\n  state: {\n    sidebar: {\n      opened: !+Cookies.get('sidebarStatus'),\n      withoutAnimation: false\n    },\n    device: 'desktop'\n  },\n  mutations: {\n    TOGGLE_SIDEBAR: state => {\n      if (state.sidebar.opened) {\n        Cookies.set('sidebarStatus', 1)\n      } else {\n        Cookies.set('sidebarStatus', 0)\n      }\n      state.sidebar.opened = !state.sidebar.opened\n      state.sidebar.withoutAnimation = false\n    },\n    CLOSE_SIDEBAR: (state, withoutAnimation) => {\n      Cookies.set('sidebarStatus', 1)\n      state.sidebar.opened = false\n      state.sidebar.withoutAnimation = withoutAnimation\n    },\n    TOGGLE_DEVICE: (state, device) => {\n      state.device = device\n    }\n  },\n  actions: {\n    ToggleSideBar: ({ commit }) => {\n      commit('TOGGLE_SIDEBAR')\n    },\n    CloseSideBar({ commit }, { withoutAnimation }) {\n      commit('CLOSE_SIDEBAR', withoutAnimation)\n    },\n    ToggleDevice({ commit }, device) {\n      commit('TOGGLE_DEVICE', device)\n    }\n  }\n}\n\nexport default app\n"
  },
  {
    "path": "admin-web-page/src/store/modules/user.js",
    "content": "import { login, logout, getInfo } from '@/api/login'\nimport { getToken, setToken, removeToken } from '@/utils/auth'\nimport { Message, MessageBox } from 'element-ui'\n\nconst user = {\n  state: {\n    token: getToken(),\n    name: '',\n    avatar: '',\n    roles: [1]\n  },\n\n  mutations: {\n    SET_TOKEN: (state, token) => {\n      state.token = token\n    },\n    SET_NAME: (state, name) => {\n      state.name = name\n    },\n    SET_AVATAR: (state, avatar) => {\n      state.avatar = avatar\n    },\n    SET_ROLES: (state, roles) => {\n      state.roles = roles\n    }\n  },\n\n  actions: {\n    // 登录\n    Login({ commit }, userInfo) {\n      const username = userInfo.username.trim()\n      return new Promise((resolve, reject) => {\n        login(username, userInfo.password).then(response => {\n          if (response.code == 100) {\n            Message.success(\"登陆成功\");\n            setToken(\"1\")\n            commit('SET_TOKEN', \"1\")\n          } else {\n            Message.error(\"登陆失败\");\n          }\n          resolve()\n        }).catch(error => {\n          reject(error)\n        })\n      })\n    },\n\n    // 获取用户信息\n    GetInfo({ commit, state }) {\n      return new Promise((resolve, reject) => {\n        getInfo(state.token).then(response => {\n          const data = response.data\n          if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组\n            commit('SET_ROLES', data.roles)\n          } else {\n            reject('getInfo: roles must be a non-null array !')\n          }\n          commit('SET_NAME', data.name)\n          commit('SET_AVATAR', data.avatar)\n          resolve(response)\n        }).catch(error => {\n          reject(error)\n        })\n      })\n    },\n\n    // 登出\n    LogOut({ commit, state }) {\n      return new Promise((resolve, reject) => {\n        logout(state.token).then(() => {\n          commit('SET_TOKEN', '')\n          commit('SET_ROLES', [])\n          removeToken()\n          resolve()\n        }).catch(error => {\n          reject(error)\n        })\n      })\n    },\n\n    // 前端 登出\n    FedLogOut({ commit }) {\n      return new Promise(resolve => {\n        commit('SET_TOKEN', '')\n        removeToken()\n        resolve()\n      })\n    }\n  }\n}\n\nexport default user\n"
  },
  {
    "path": "admin-web-page/src/styles/btn.scss",
    "content": "@import './variables.scss';\n\n@mixin colorBtn($color) {\n  background: $color;\n  &:hover {\n    color: $color;\n    &:before,\n    &:after {\n      background: $color;\n    }\n  }\n}\n\n.blue-btn {\n  @include colorBtn($blue)\n}\n\n.light-blue-btn {\n  @include colorBtn($light-blue)\n}\n\n.red-btn {\n  @include colorBtn($red)\n}\n\n.pink-btn {\n  @include colorBtn($pink)\n}\n\n.green-btn {\n  @include colorBtn($green)\n}\n\n.tiffany-btn {\n  @include colorBtn($tiffany)\n}\n\n.yellow-btn {\n  @include colorBtn($yellow)\n}\n\n.pan-btn {\n  font-size: 14px;\n  color: #fff;\n  padding: 14px 36px;\n  border-radius: 8px;\n  border: none;\n  outline: none;\n  transition: 600ms ease all;\n  position: relative;\n  display: inline-block;\n  &:hover {\n    background: #fff;\n    &:before,\n    &:after {\n      width: 100%;\n      transition: 600ms ease all;\n    }\n  }\n  &:before,\n  &:after {\n    content: '';\n    position: absolute;\n    top: 0;\n    right: 0;\n    height: 2px;\n    width: 0;\n    transition: 400ms ease all;\n  }\n  &::after {\n    right: inherit;\n    top: inherit;\n    left: 0;\n    bottom: 0;\n  }\n}\n\n.custom-button {\n  display: inline-block;\n  line-height: 1;\n  white-space: nowrap;\n  cursor: pointer;\n  background: #fff;\n  color: #fff;\n  -webkit-appearance: none;\n  text-align: center;\n  box-sizing: border-box;\n  outline: 0;\n  margin: 0;\n  padding: 10px 15px;\n  font-size: 14px;\n  border-radius: 4px;\n}\n\n"
  },
  {
    "path": "admin-web-page/src/styles/element-ui.scss",
    "content": " //to reset element-ui default css\n.el-upload {\n  input[type=\"file\"] {\n    display: none !important;\n  }\n}\n\n.el-upload__input {\n  display: none;\n}\n\n//暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461\n.el-dialog {\n  transform: none;\n  left: 0;\n  position: relative;\n  margin: 0 auto;\n}\n\n//element ui upload\n.upload-container {\n  .el-upload {\n    width: 100%;\n    .el-upload-dragger {\n      width: 100%;\n      height: 200px;\n    }\n  }\n}\n"
  },
  {
    "path": "admin-web-page/src/styles/index.scss",
    "content": "@import './variables.scss';\n@import './mixin.scss';\n@import './transition.scss';\n@import './element-ui.scss';\n@import './sidebar.scss';\n\nbody {\n  height: 100%;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;\n}\n\nlabel {\n  font-weight: 700;\n}\n\nhtml {\n  height: 100%;\n  box-sizing: border-box;\n}\n\n#app{\n  height: 100%;\n}\n\n*,\n*:before,\n*:after {\n  box-sizing: inherit;\n}\n\na,\na:focus,\na:hover {\n  cursor: pointer;\n  color: inherit;\n  outline: none;\n  text-decoration: none;\n}\n\ndiv:focus{\n  outline: none;\n }\n\na:focus,\na:active {\n  outline: none;\n}\n\na,\na:focus,\na:hover {\n  cursor: pointer;\n  color: inherit;\n  text-decoration: none;\n}\n\n.clearfix {\n  &:after {\n    visibility: hidden;\n    display: block;\n    font-size: 0;\n    content: \" \";\n    clear: both;\n    height: 0;\n  }\n}\n\n//main-container全局样式\n.app-main{\n  min-height: 100%\n}\n\n.app-container {\n  padding: 20px;\n}\n"
  },
  {
    "path": "admin-web-page/src/styles/mixin.scss",
    "content": "@mixin clearfix {\n  &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n}\n\n@mixin scrollBar {\n  &::-webkit-scrollbar-track-piece {\n    background: #d3dce6;\n  }\n  &::-webkit-scrollbar {\n    width: 6px;\n  }\n  &::-webkit-scrollbar-thumb {\n    background: #99a9bf;\n    border-radius: 20px;\n  }\n}\n\n@mixin relative {\n  position: relative;\n  width: 100%;\n  height: 100%;\n}\n\n"
  },
  {
    "path": "admin-web-page/src/styles/sidebar.scss",
    "content": "#app {\n  // 主体区域\n  .main-container {\n    min-height: 100%;\n    transition: margin-left .28s;\n    margin-left: 180px;\n    position: relative;\n  }\n  // 侧边栏\n  .sidebar-container {\n    transition: width 0.28s;\n    width: 180px !important;\n    height: 100%;\n    position: fixed;\n    font-size: 0px;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1001;\n    overflow: hidden;\n    //reset element-ui css\n    .horizontal-collapse-transition {\n      transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;\n    }\n    .el-scrollbar__bar.is-vertical{\n      right: 0px;\n    }\n    .scrollbar-wrapper {\n      overflow-x: hidden!important;\n      .el-scrollbar__view {\n        height: 100%;\n      }\n    }\n    .is-horizontal {\n      display: none;\n    }\n    a {\n      display: inline-block;\n      width: 100%;\n      overflow: hidden;\n    }\n    .svg-icon {\n      margin-right: 16px;\n    }\n    .el-menu {\n      border: none;\n      height: 100%;\n      width: 100% !important;\n    }\n    .is-active > .el-submenu__title{\n      color: #f4f4f5!important;\n    }\n  }\n  .hideSidebar {\n    .sidebar-container {\n      width: 36px !important;\n    }\n    .main-container {\n      margin-left: 36px;\n    }\n    .submenu-title-noDropdown {\n      padding-left: 10px !important;\n      position: relative;\n      .el-tooltip {\n        padding: 0 10px !important;\n      }\n    }\n    .el-submenu {\n      overflow: hidden;\n      &>.el-submenu__title {\n        padding-left: 10px !important;\n        .el-submenu__icon-arrow {\n          display: none;\n        }\n      }\n    }\n    .el-menu--collapse {\n      .el-submenu {\n        &>.el-submenu__title {\n          &>span {\n            height: 0;\n            width: 0;\n            overflow: hidden;\n            visibility: hidden;\n            display: inline-block;\n          }\n        }\n      }\n    }\n  }\n  .sidebar-container .nest-menu .el-submenu>.el-submenu__title,\n  .sidebar-container .el-submenu .el-menu-item {\n    min-width: 180px !important;\n    background-color: $subMenuBg !important;\n    &:hover {\n      background-color: $menuHover !important;\n    }\n  }\n  .el-menu--collapse .el-menu .el-submenu {\n    min-width: 180px !important;\n  }\n\n  //适配移动端\n  .mobile {\n    .main-container {\n      margin-left: 0px;\n    }\n    .sidebar-container {\n      transition: transform .28s;\n      width: 180px !important;\n    }\n    &.hideSidebar {\n      .sidebar-container {\n        transition-duration: 0.3s;\n        transform: translate3d(-180px, 0, 0);\n      }\n    }\n  }\n  .withoutAnimation {\n    .main-container,\n    .sidebar-container {\n      transition: none;\n    }\n  }\n}\n\n.el-menu--vertical{\n  & >.el-menu{\n    .svg-icon{\n      margin-right: 16px;\n    }\n  }\n}\n"
  },
  {
    "path": "admin-web-page/src/styles/transition.scss",
    "content": "//globl transition css\n\n/*fade*/\n.fade-enter-active,\n.fade-leave-active {\n  transition: opacity 0.28s;\n}\n\n.fade-enter,\n.fade-leave-active {\n  opacity: 0;\n}\n\n/*fade-transform*/\n.fade-transform-leave-active,\n.fade-transform-enter-active {\n  transition: all .5s;\n}\n.fade-transform-enter {\n  opacity: 0;\n  transform: translateX(-30px);\n}\n.fade-transform-leave-to {\n  opacity: 0;\n  transform: translateX(30px);\n}\n\n/*fade*/\n.breadcrumb-enter-active,\n.breadcrumb-leave-active {\n  transition: all .5s;\n}\n\n.breadcrumb-enter,\n.breadcrumb-leave-active {\n  opacity: 0;\n  transform: translateX(20px);\n}\n\n.breadcrumb-move {\n  transition: all .5s;\n}\n\n.breadcrumb-leave-active {\n  position: absolute;\n}\n"
  },
  {
    "path": "admin-web-page/src/styles/variables.scss",
    "content": "//sidebar\n$menuBg:#304156;\n$subMenuBg:#1f2d3d;\n$menuHover:#001528;\n"
  },
  {
    "path": "admin-web-page/src/utils/auth.js",
    "content": "import Cookies from 'js-cookie'\n\nconst TokenKey = 'Orange-Verify-Token'\n\nexport function getToken() {\n  return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n  return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n  return Cookies.remove(TokenKey)\n}\n"
  },
  {
    "path": "admin-web-page/src/utils/index.js",
    "content": "/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n  if (arguments.length === 0) {\n    return null\n  }\n  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n  let date\n  if (typeof time === 'object') {\n    date = time\n  } else {\n    if (('' + time).length === 10) time = parseInt(time) * 1000\n    date = new Date(time)\n  }\n  const formatObj = {\n    y: date.getFullYear(),\n    m: date.getMonth() + 1,\n    d: date.getDate(),\n    h: date.getHours(),\n    i: date.getMinutes(),\n    s: date.getSeconds(),\n    a: date.getDay()\n  }\n  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n    let value = formatObj[key]\n    // Note: getDay() returns 0 on Sunday\n    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n    if (result.length > 0 && value < 10) {\n      value = '0' + value\n    }\n    return value || 0\n  })\n  return time_str\n}\n\nexport function formatTime(time, option) {\n  time = +time * 1000\n  const d = new Date(time)\n  const now = Date.now()\n\n  const diff = (now - d) / 1000\n\n  if (diff < 30) {\n    return '刚刚'\n  } else if (diff < 3600) {\n    // less 1 hour\n    return Math.ceil(diff / 60) + '分钟前'\n  } else if (diff < 3600 * 24) {\n    return Math.ceil(diff / 3600) + '小时前'\n  } else if (diff < 3600 * 24 * 2) {\n    return '1天前'\n  }\n  if (option) {\n    return parseTime(time, option)\n  } else {\n    return (\n      d.getMonth() +\n      1 +\n      '月' +\n      d.getDate() +\n      '日' +\n      d.getHours() +\n      '时' +\n      d.getMinutes() +\n      '分'\n    )\n  }\n}\n\nexport function isExternal(path) {\n  return /^(https?:|mailto:|tel:)/.test(path)\n}\n"
  },
  {
    "path": "admin-web-page/src/utils/request.js",
    "content": "import axios from 'axios'\nimport { Message, MessageBox, Loading } from 'element-ui'\nimport store from '../store'\nimport { getToken } from '@/utils/auth'\nimport Vue from 'vue'\n\n// 创建axios实例\nconst service = axios.create({\n  baseURL: process.env.BASE_API, // api 的 base_url\n  timeout: 10000 // 请求超时时间\n})\n\nlet load;\n\n// request拦截器\nservice.interceptors.request.use(\n  config => {\n    if (store.getters.token) {\n      // config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改\n    }\n    load = Loading.service({\n      lock: true,\n      text: 'Loading',\n      spinner: 'el-icon-loading',\n      background: 'rgba(0, 0, 0, 0.7)'\n    });\n\n    return config\n  },\n  error => {\n    load.close();\n    Promise.reject(error)\n  }\n)\n\n// response 拦截器\nservice.interceptors.response.use(\n  response => {\n\n    load.close();\n\n    const res = response.data\n    if (res.code == 12) {\n\n      Message.error(\"登陆失效，请重新登陆\")\n      store.dispatch('FedLogOut').then(() => {\n        location.reload()\n      })\n\n    }\n\n    return response.data\n\n  },\n  error => {\n    load.close();\n    Message({\n      message: error.message,\n      type: 'error',\n      duration: 5 * 1000\n    })\n    return Promise.reject(error)\n  }\n)\n\nVue.prototype.$axios = service;\n\nexport default service\n"
  },
  {
    "path": "admin-web-page/src/utils/time.js",
    "content": "\nvar time = {\n  timeStampDate: function(data) {\n\n  // 不传参就生成当前时间的13位时间戳\n  if (data == null) {\n    return \"\";\n  } else if (data.time == null) {\n    return \"\";\n  }\n\n  var timeLength = data.time.toString().length;\n\n  var date;\n\n  //为13位时间戳的时候怎么办\n  if (timeLength == 13) {\n\n    date = new Date(data.time);//时间戳为10位需*1000，时间戳为13位的话不需乘1000\n\n  }else if(timeLength == 10) {\n\n    date = new Date(data.time * 1000);//时间戳为10位需*1000，时间戳为13位的话不需乘1000\n\n  }\n\n  let Y = date.getFullYear() + '-';\n  let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';\n  let D = date.getDate() + ' ';\n  let h = date.getHours() + ':';\n  let m = date.getMinutes() + ':';\n  let s = date.getSeconds();\n\n  return Y+M+D+h+m+s;\n\n}\n}\n\nmodule.exports = time\n"
  },
  {
    "path": "admin-web-page/src/utils/validate.js",
    "content": "/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function isvalidUsername(str) {\n  const valid_map = ['admin', 'editor']\n  return valid_map.indexOf(str.trim()) >= 0\n}\n\n/* 合法uri*/\nexport function validateURL(textval) {\n  const urlregex = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n  return urlregex.test(textval)\n}\n\n/* 小写字母*/\nexport function validateLowerCase(str) {\n  const reg = /^[a-z]+$/\n  return reg.test(str)\n}\n\n/* 大写字母*/\nexport function validateUpperCase(str) {\n  const reg = /^[A-Z]+$/\n  return reg.test(str)\n}\n\n/* 大小写字母*/\nexport function validatAlphabets(str) {\n  const reg = /^[A-Za-z]+$/\n  return reg.test(str)\n}\n"
  },
  {
    "path": "admin-web-page/src/views/404.vue",
    "content": "<template>\n  <div class=\"wscn-http404-container\">\n    <div class=\"wscn-http404\">\n      <div class=\"pic-404\">\n        <img class=\"pic-404__parent\" src=\"@/assets/404_images/404.png\" alt=\"404\">\n        <img class=\"pic-404__child left\" src=\"@/assets/404_images/404_cloud.png\" alt=\"404\">\n        <img class=\"pic-404__child mid\" src=\"@/assets/404_images/404_cloud.png\" alt=\"404\">\n        <img class=\"pic-404__child right\" src=\"@/assets/404_images/404_cloud.png\" alt=\"404\">\n      </div>\n      <div class=\"bullshit\">\n        <div class=\"bullshit__oops\">404!</div>\n        <div class=\"bullshit__info\">版权所有\n          <a class=\"link-type\" href=\"https://wallstreetcn.com\" target=\"_blank\">Orange Verify</a>\n        </div>\n        <div class=\"bullshit__headline\">{{ message }}</div>\n        <div class=\"bullshit__info\">请检查您输入的网址是否正确，请点击以下按钮返回主页或者发送错误报告</div>\n        <a href=\"\" class=\"bullshit__return-home\">返回首页</a>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\n\nexport default {\n  name: 'Page404',\n  computed: {\n    message() {\n      return '网管说这个页面你不能进......'\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.wscn-http404-container{\n  transform: translate(-50%,-50%);\n  position: absolute;\n  top: 40%;\n  left: 50%;\n}\n.wscn-http404 {\n  position: relative;\n  width: 1200px;\n  padding: 0 50px;\n  overflow: hidden;\n  .pic-404 {\n    position: relative;\n    float: left;\n    width: 600px;\n    overflow: hidden;\n    &__parent {\n      width: 100%;\n    }\n    &__child {\n      position: absolute;\n      &.left {\n        width: 80px;\n        top: 17px;\n        left: 220px;\n        opacity: 0;\n        animation-name: cloudLeft;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1s;\n      }\n      &.mid {\n        width: 46px;\n        top: 10px;\n        left: 420px;\n        opacity: 0;\n        animation-name: cloudMid;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1.2s;\n      }\n      &.right {\n        width: 62px;\n        top: 100px;\n        left: 500px;\n        opacity: 0;\n        animation-name: cloudRight;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1s;\n      }\n      @keyframes cloudLeft {\n        0% {\n          top: 17px;\n          left: 220px;\n          opacity: 0;\n        }\n        20% {\n          top: 33px;\n          left: 188px;\n          opacity: 1;\n        }\n        80% {\n          top: 81px;\n          left: 92px;\n          opacity: 1;\n        }\n        100% {\n          top: 97px;\n          left: 60px;\n          opacity: 0;\n        }\n      }\n      @keyframes cloudMid {\n        0% {\n          top: 10px;\n          left: 420px;\n          opacity: 0;\n        }\n        20% {\n          top: 40px;\n          left: 360px;\n          opacity: 1;\n        }\n        70% {\n          top: 130px;\n          left: 180px;\n          opacity: 1;\n        }\n        100% {\n          top: 160px;\n          left: 120px;\n          opacity: 0;\n        }\n      }\n      @keyframes cloudRight {\n        0% {\n          top: 100px;\n          left: 500px;\n          opacity: 0;\n        }\n        20% {\n          top: 120px;\n          left: 460px;\n          opacity: 1;\n        }\n        80% {\n          top: 180px;\n          left: 340px;\n          opacity: 1;\n        }\n        100% {\n          top: 200px;\n          left: 300px;\n          opacity: 0;\n        }\n      }\n    }\n  }\n  .bullshit {\n    position: relative;\n    float: left;\n    width: 300px;\n    padding: 30px 0;\n    overflow: hidden;\n    &__oops {\n      font-size: 32px;\n      font-weight: bold;\n      line-height: 40px;\n      color: #1482f0;\n      opacity: 0;\n      margin-bottom: 20px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-fill-mode: forwards;\n    }\n    &__headline {\n      font-size: 20px;\n      line-height: 24px;\n      color: #222;\n      font-weight: bold;\n      opacity: 0;\n      margin-bottom: 10px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.1s;\n      animation-fill-mode: forwards;\n    }\n    &__info {\n      font-size: 13px;\n      line-height: 21px;\n      color: grey;\n      opacity: 0;\n      margin-bottom: 30px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.2s;\n      animation-fill-mode: forwards;\n    }\n    &__return-home {\n      display: block;\n      float: left;\n      width: 110px;\n      height: 36px;\n      background: #1482f0;\n      border-radius: 100px;\n      text-align: center;\n      color: #ffffff;\n      opacity: 0;\n      font-size: 14px;\n      line-height: 36px;\n      cursor: pointer;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.3s;\n      animation-fill-mode: forwards;\n    }\n    @keyframes slideUp {\n      0% {\n        transform: translateY(60px);\n        opacity: 0;\n      }\n      100% {\n        transform: translateY(0);\n        opacity: 1;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/account/account_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item label=\"IP地址\">\n              <el-input v-model=\"seachForm.createIp\" placeholder=\"IP地址\" @keyup.enter.native=\"search\"/>\n            </el-form-item>\n            <el-form-item label=\"用户名\">\n              <el-input v-model=\"seachForm.username\" placeholder=\"用户名\" @keyup.enter.native=\"search\"/>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--按钮操作区-->\n          <!-- <el-button type=\"primary\" @click=\"openForm\"><i class=\"el-icon-plus\"/> 添加</el-button> -->\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"创建时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"softName\"\n              label=\"软件名\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"username\"\n              label=\"用户名\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"password\"\n              label=\"密码\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"securityCode\"\n              label=\"安全码\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"qq\"\n              label=\"联系QQ\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"name\"\n              label=\"姓名\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"createIp\"\n              label=\"IP地址\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"createIpInfo\"\n              label=\"IP信息\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"blacklist\"\n              label=\"黑名单\"\n              align=\"center\"\n            >\n              <template slot-scope=\"scope\">\n                <el-switch\n                  @change=\"blacklistChange($event,scope.row)\"\n                  v-model=\"scope.row.blacklist\"\n                  active-color=\"#13ce66\"\n                  inactive-color=\"#ff4949\">\n                </el-switch>\n              </template>\n            </el-table-column>\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" style=\"color: red\" @click=\"removeRow(scope.row)\">删除</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      softList: [],\n\n      // 搜索表单\n      seachForm: {\n        softId: \"\",\n        createIp: \"\",\n        username: \"\",\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200]\n    }\n  },\n  mounted() {\n    this.$axios.get('soft/list').then((rsp) => {\n      this.softList.push({\n        label: \"全部\",\n        value: \"\",\n      });\n      for (let i = 0;i < rsp.data.length;i++) {\n        this.softList.push({\n          label: rsp.data[i].name,\n          value: rsp.data[i].id,\n        });\n      }\n    });\n    this.getTableData();\n  },\n  methods: {\n    getTableData() {\n\n      let data = this.seachForm\n      data.current = this.tablePageNum\n      data.size = this.tablePageSize\n\n      this.$axios.get('account/page', {\n        params: data\n      }).then((rsp) => {\n        this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.records.length; i++) {\n          rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate});\n          rsp.data.records[i].blacklist = (rsp.data.records[i].blacklist == 0) ? false : true;\n        }\n        this.tableData = rsp.data.records\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      } else {\n        this.tablePageNum = 1;\n      }\n      this.getTableData()\n    },\n    updateRow(row) {\n      this.openForm({ id: row.id })\n    },\n    blacklistChange(value,row) {\n\n      this.$axios.post('account/blacklist', this.$qs.stringify({\n        accountId: row.id,\n        blacklist: value ? 1 : 0\n      })).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n    removeRow(row) {\n      this.$axios.post('account/remove', this.$qs.stringify({\n        accountId: row.id\n      })).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/card/card_form.vue",
    "content": "<template>\n\n  <div id=\"app\">\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\">\n\n        <el-card shadow=\"always\" v-show=\"searchWorkspace == false\" style=\"text-align: center\">\n          <i class=\"el-icon-upload\"></i>\n          <span> 操作</span>\n          <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card class=\"box-card\" shadow=\"always\" v-show=\"searchWorkspace == true\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-upload\"></i>\n            <span> 操作</span>\n            <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :model=\"form\" :rules=\"forms\" :status-icon=\"true\"\n                   ref=\"form\" label-width=\"100px\" class=\"demo-ruleForm\">\n\n            <el-form-item label=\"生产数量\" prop=\"count\">\n              <el-input v-model=\"form.count\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"submitForm('form')\">{{ formButtonName }}</el-button>\n              <el-button @click=\"resetForm('form')\">重置</el-button>\n            </el-form-item>\n\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n\n</template>\n\n<script>\n  export default {\n    mounted() {\n\n    },\n    methods: {\n      //上一页\n      openExpress() {\n        this.$router.push({\n          name: 'CardTypeList',\n        })\n      },\n      //表单操作\n      submitForm(formName) {\n        this.$refs[formName].validate((valid) => {\n          if (valid) {\n            this.submit();\n          } else {\n            this.$message.error('提交错误');\n            return false;\n          }\n        });\n      },\n      submit() {\n\n        let data = this.form;\n        data.cardTypeId = this.$route.params.id;\n\n        let url = \"card/create\";\n\n        this.$axios({\n          method: 'post',\n          url: url,\n          data:this.$qs.stringify(data),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      resetForm(formName) {\n        this.$refs[formName].resetFields();\n      },\n    },\n    data() {\n      return {\n        //收起放下\n        searchWorkspace: true,\n\n        formButtonName: '立即创建',\n\n        softList: [],\n        cardTypeUnitList: [],\n\n        //表单配置\n        form: {\n          count: '',\n        },\n        forms: {\n          count: [\n            {required: true, message: '请填写生产数量', trigger: 'blur'},\n          ],\n        },\n\n      }\n    }\n  }\n</script>\n\n<style>\n  .common-width {\n    width: 500px;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/card/card_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item label=\"卡类单位\">\n              <el-select v-model=\"seachForm.cardTypeUnit\" placeholder=\"请选择卡类单位\">\n                <el-option v-for=\"item in cardTypeUnitList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item label=\"使用状态\">\n              <el-select v-model=\"seachForm.useStatus\" placeholder=\"请选择使用状态\">\n                <el-option v-for=\"item in useStatusList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item label=\"封停状态\">\n              <el-select v-model=\"seachForm.closure\" placeholder=\"请选择封停状态\">\n                <el-option v-for=\"item in closureList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"exportCard\">导出卡密</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"removeCard\">批量删除</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--表格展示区-->\n          <el-table\n            ref=\"multipleTable\"\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              type=\"selection\"\n              width=\"55\">\n            </el-table-column>\n            <el-table-column\n              prop=\"createDate\"\n              label=\"创建时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"cardNumber\"\n              label=\"充值卡号\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"useStatus\"\n              label=\"使用状态\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"closure\"\n              label=\"是否封停使用\"\n              align=\"center\"\n            >\n              <template slot-scope=\"scope\">\n                <el-switch\n                  @change=\"closureChange($event,scope.row)\"\n                  v-model=\"scope.row.closure\"\n                  active-color=\"#13ce66\"\n                  inactive-color=\"#ff4949\">\n                </el-switch>\n              </template>\n            </el-table-column>\n            <el-table-column\n              prop=\"sellStatus\"\n              label=\"卖出状态\"\n              align=\"center\"\n            >\n              <template slot-scope=\"scope\">\n                <el-switch\n                  @change=\"sellStatusChange($event,scope.row)\"\n                  v-model=\"scope.row.sellStatus\"\n                  active-color=\"#13ce66\"\n                  inactive-color=\"#ff4949\">\n                </el-switch>\n              </template>\n            </el-table-column>\n            <el-table-column\n              prop=\"softName\"\n              label=\"软件名称\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"cardTypeUnit\"\n              label=\"卡类单位\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"cardTypeValue\"\n              label=\"卡类面值\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"accountName\"\n              label=\"使用者账号\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"startDate\"\n              label=\"开始使用时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"endDate\"\n              label=\"结束使用时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" style=\"color: red\" @click=\"removeRow(scope.row)\">删除</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <el-dialog\n      :title=\"exportCardDialogNumber\"\n      :visible.sync=\"exportCardDialog\"\n      :close-on-click-modal=\"false\"\n      :lock-scroll=\"false\"\n      width=\"30%\"\n      center>\n      <el-input\n        type=\"textarea\"\n        :rows=\"15\"\n        v-model=\"exportCardDialogContent\">\n      </el-input>\n      <span slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"exportCardDialog = false\">取 消</el-button>\n        <el-button type=\"primary\" @click=\"sellCard\">卖出卡密</el-button>\n      </span>\n    </el-dialog>\n\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      softList: [],\n      cardTypeUnitList: [],\n      useStatusList: [\n        {label: \"全部\",value: null},\n        {label: \"未使用\",value: 0},\n        {label: \"已使用\",value: 1},\n      ],\n      closureList: [\n        {label: \"全部\",value: null},\n        {label: \"未封停\",value: 0},\n        {label: \"已封停\",value: 1},\n      ],\n\n      // 搜索表单\n      seachForm: {\n        softId: '',\n        cardTypeUnit: null,\n        useStatus: null,\n        closure: null,\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200],\n      multipleTable: [],\n      exportCardDialog: false,\n      exportCardDialogContent: '',\n      exportCardDialogNumber: '提示: 0张卡密',\n    }\n  },\n  mounted() {\n\n    this.cardTypeUnitList.push(\n        {\n        label: \"全部\",\n        value: null,\n        },\n        {\n        label: \"分\",\n        value: 0,\n        },\n        {\n        label: \"时\",\n        value: 1,\n        },\n        {\n        label: \"天\",\n        value: 2,\n        },\n        {\n        label: \"周\",\n        value: 3,\n        },\n        {\n        label: \"月\",\n        value: 4,\n        },\n        {\n        label: \"年\",\n        value: 5,\n        },\n    );\n\n    this.$axios.get('soft/list').then((rsp) => {\n      this.softList.push({\n        label: \"全部\",\n        value: \"\",\n      });\n      for (let i = 0;i < rsp.data.length;i++) {\n        this.softList.push({\n          label: rsp.data[i].name,\n          value: rsp.data[i].id,\n        });\n      }\n    });\n    this.getTableData();\n  },\n  methods: {\n    getTableData() {\n\n      let data = this.seachForm\n      data.current = this.tablePageNum\n      data.size = this.tablePageSize\n\n      this.$axios.get('card/page', {\n        params: data\n      }).then((rsp) => {\n        this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.records.length; i++) {\n          rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate});\n          rsp.data.records[i].startDate = time.timeStampDate({time:rsp.data.records[i].startDate});\n          rsp.data.records[i].endDate = time.timeStampDate({time:rsp.data.records[i].endDate});\n          switch (rsp.data.records[i].cardTypeUnit) {\n            case 0:\n              rsp.data.records[i].cardTypeUnit = \"分\";\n              break;\n            case 1:\n              rsp.data.records[i].cardTypeUnit = \"时\";\n              break;\n            case 2:\n              rsp.data.records[i].cardTypeUnit = \"天\";\n              break;\n            case 3:\n              rsp.data.records[i].cardTypeUnit = \"周\";\n              break;\n            case 4:\n              rsp.data.records[i].cardTypeUnit = \"月\";\n              break;\n            case 5:\n              rsp.data.records[i].cardTypeUnit = \"年\";\n              break;\n          }\n\n          rsp.data.records[i].useStatus = (rsp.data.records[i].useStatus == 0) ? '未使用' : '已使用';\n          rsp.data.records[i].closure = (rsp.data.records[i].closure == 0) ? false : true;\n          rsp.data.records[i].sellStatus = (rsp.data.records[i].sellStatus == 0) ? false : true;\n        }\n        this.tableData = rsp.data.records\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    exportCard() {\n      this.exportCardDialog = true;\n      let selection = this.$refs.multipleTable.selection;\n      this.exportCardDialogContent = \"\";\n      let count = 0;\n      for (let i = 0;i < selection.length;i++) {\n        if (selection[i].sellStatus == false && selection[i].closure == false && selection[i].useStatus == '未使用') {\n          count+=1;\n          if (i == selection.length - 1) {\n            this.exportCardDialogContent+=selection[i].cardNumber;\n          } else {\n            this.exportCardDialogContent+=selection[i].cardNumber+\"\\n\";\n          }\n        }\n      }\n      this.exportCardDialogNumber = \"提示：\" + count + \"张卡密\";\n    },\n    sellCard() {\n      let selection = this.$refs.multipleTable.selection;\n      let data = [];\n      for (let i = 0;i < selection.length;i++) {\n        if (selection[i].sellStatus == false && selection[i].closure == false && selection[i].useStatus == '未使用') {\n          data.push(selection[i].id);\n        }\n      }\n      this.$axios.post('card/sell', data).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      } else {\n        this.tablePageNum = 1;\n      }\n      this.getTableData()\n    },\n    closureChange(value,row) {\n\n      this.$axios.post('card/closure', this.$qs.stringify({\n        cardId: row.id,\n        closure: value ? 1 : 0\n      })).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n    removeCard() {\n      let selection = this.$refs.multipleTable.selection;\n      let data = [];\n      for (let i = 0;i < selection.length;i++) {\n        data.push(selection[i].id);\n      }\n      this.$axios.post('card/batchRemove', data).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg);\n      })\n    },\n    sellStatusChange(value,row) {\n\n      this.$axios.post('card/sellStatus', this.$qs.stringify({\n        cardId: row.id,\n        sellStatus: value ? 1 : 0\n      })).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n    removeRow(row) {\n      this.$axios.post('card/remove', this.$qs.stringify({\n        cardId: row.id\n      })).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/card/card_type_form.vue",
    "content": "<template>\n\n  <div id=\"app\">\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\">\n\n        <el-card shadow=\"always\" v-show=\"searchWorkspace == false\" style=\"text-align: center\">\n          <i class=\"el-icon-upload\"></i>\n          <span> 操作</span>\n          <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card class=\"box-card\" shadow=\"always\" v-show=\"searchWorkspace == true\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-upload\"></i>\n            <span> 操作</span>\n            <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :model=\"form\" :rules=\"forms\" :status-icon=\"true\"\n                   ref=\"form\" label-width=\"100px\" class=\"demo-ruleForm\">\n\n            <el-form-item label=\"软件选择\" prop=\"softId\">\n              <el-select v-model=\"form.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n\n            <el-form-item label=\"卡类单位\" prop=\"unit\">\n              <el-select v-model=\"form.unit\" placeholder=\"请选择卡类单位\">\n                <el-option v-for=\"item in cardTypeUnitList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n\n            <el-form-item label=\"面值\" prop=\"value\">\n              <el-input v-model=\"form.value\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"submitForm('form')\">{{ formButtonName }}</el-button>\n              <el-button @click=\"resetForm('form')\">重置</el-button>\n            </el-form-item>\n\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n\n</template>\n\n<script>\n  export default {\n    mounted() {\n\n      this.$axios.get('soft/list').then((rsp) => {\n        for (let i = 0;i < rsp.data.length;i++) {\n          this.softList.push({\n            label: rsp.data[i].name,\n            value: rsp.data[i].id,\n          });\n        }\n      });\n\n      this.cardTypeUnitList.push(\n        {\n        label: \"分\",\n        value: 0,\n        },\n        {\n        label: \"时\",\n        value: 1,\n        },\n        {\n        label: \"天\",\n        value: 2,\n        },\n        {\n        label: \"周\",\n        value: 3,\n        },\n        {\n        label: \"月\",\n        value: 4,\n        },\n        {\n        label: \"年\",\n        value: 5,\n        },\n      );\n\n      if (this.$route.params.id != null) {\n\n        this.$axios.get(\"cardType/single\",{\n          params: {\n            cardTypeId: this.$route.params.id,\n          }\n        }).then((rsp) => {\n          this.form =rsp.data;\n        });\n\n        this.formButtonName = '立即保存';\n      }\n\n    },\n    methods: {\n      //上一页\n      openExpress() {\n        this.$router.push({\n          name: 'CardTypeList',\n        })\n      },\n      //表单操作\n      submitForm(formName) {\n        this.$refs[formName].validate((valid) => {\n          if (valid) {\n            if (this.$route.params.id != null) {\n              this.submit(true);\n            } else {\n              this.submit(false);\n            }\n          } else {\n            this.$message.error('提交错误');\n            return false;\n          }\n        });\n      },\n      submit(isUpdate) {\n\n        let data = this.form;\n\n        let url = \"cardType/create\";\n        if (isUpdate == true) {\n          data.id = this.$route.params.id;\n          url = \"cardType/update\";\n        }\n\n        this.$axios({\n          method: 'post',\n          url: url,\n          data:this.$qs.stringify(data),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      resetForm(formName) {\n        this.$refs[formName].resetFields();\n      },\n    },\n    data() {\n      return {\n        //收起放下\n        searchWorkspace: true,\n\n        formButtonName: '立即创建',\n\n        softList: [],\n        cardTypeUnitList: [],\n\n        //表单配置\n        form: {\n          softId: '',\n          unit: '',\n          value: '',\n        },\n        forms: {\n          softId: [\n            {required: true, message: '请选择软件', trigger: 'blur'},\n          ],\n          unit: [\n            {required: true, message: '请选择单位', trigger: 'blur'},\n          ],\n          value: [\n            {required: true, message: '请填写面值', trigger: 'blur'},\n            {min: 1, max: 6, message: '长度在 1 到 6 个字符', trigger: 'blur'}\n          ],\n        },\n\n      }\n    }\n  }\n</script>\n\n<style>\n  .common-width {\n    width: 500px;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/card/card_type_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--按钮操作区-->\n          <el-button type=\"primary\" @click=\"openForm\"><i class=\"el-icon-plus\"/> 添加</el-button>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"创建时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"softName\"\n              label=\"软件名称\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"unit\"\n              label=\"单位\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"value\"\n              align=\"center\"\n              label=\"面值\"\n            />\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" @click=\"createCardRow(scope.row)\">创建卡密</el-button>\n                <el-button type=\"text\" size=\"small\" @click=\"updateRow(scope.row)\">编辑</el-button>\n                <el-button type=\"text\" size=\"small\" style=\"color: red\" @click=\"removeRow(scope.row)\">删除</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      softList: [],\n\n      // 搜索表单\n      seachForm: {\n        softId: \"\",\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200]\n    }\n  },\n  mounted() {\n    this.$axios.get('soft/list').then((rsp) => {\n      this.softList.push({\n        label: \"全部\",\n        value: \"\",\n      });\n      for (let i = 0;i < rsp.data.length;i++) {\n        this.softList.push({\n          label: rsp.data[i].name,\n          value: rsp.data[i].id,\n        });\n      }\n    });\n    this.getTableData();\n  },\n  methods: {\n    createCardRow(row) {\n      this.$router.push({\n        name: 'CardForm',\n        params: {id: row.id}\n      })\n    },\n    openForm(params) {\n      params = params || {}\n      params.id = params.id || null\n      this.$router.push({\n        name: 'CardTypeForm',\n        params: params\n      })\n    },\n    getTableData() {\n\n      let data = this.seachForm\n      data.current = this.tablePageNum\n      data.size = this.tablePageSize\n\n      this.$axios.get('cardType/page', {\n        params: data\n      }).then((rsp) => {\n        this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.records.length; i++) {\n          rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate});\n          switch (rsp.data.records[i].unit) {\n            case 0:\n              rsp.data.records[i].unit = \"分\";\n              break;\n            case 1:\n              rsp.data.records[i].unit = \"时\";\n              break;\n            case 2:\n              rsp.data.records[i].unit = \"天\";\n              break;\n            case 3:\n              rsp.data.records[i].unit = \"周\";\n              break;\n            case 4:\n              rsp.data.records[i].unit = \"月\";\n              break;\n            case 5:\n              rsp.data.records[i].unit = \"年\";\n              break;\n          }\n        }\n        this.tableData = rsp.data.records\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      } else {\n        this.tablePageNum = 1;\n      }\n      this.getTableData()\n    },\n    updateRow(row) {\n      this.openForm({ id: row.id })\n    },\n    removeRow(row) {\n      this.$axios.post('cardType/remove', this.$qs.stringify({\n        cardTypeId: row.id\n      })).then((rsp) => {\n        this.getTableData();\n        this.$message(rsp.msg)\n      })\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/config/baidu_map_api_form.vue",
    "content": "<template>\n\n  <div id=\"app\">\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\">\n\n        <el-card shadow=\"always\" v-show=\"searchWorkspace == false\" style=\"text-align: center\">\n          <i class=\"el-icon-upload\"></i>\n          <span> 操作</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card class=\"box-card\" shadow=\"always\" v-show=\"searchWorkspace == true\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-upload\"></i>\n            <span> 操作</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :model=\"form\" :rules=\"forms\" :status-icon=\"true\"\n                   ref=\"form\" label-width=\"100px\" class=\"demo-ruleForm\">\n\n            <el-form-item label=\"appkey\" prop=\"appkey\">\n              <el-input v-model=\"form.appkey\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"submitForm('form')\">{{ formButtonName }}</el-button>\n              <el-button @click=\"resetForm('form')\">重置</el-button>\n            </el-form-item>\n\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n\n</template>\n\n<script>\n  export default {\n    mounted() {\n\n      this.$axios.get(\"baiduMapApi/single\").then((rsp) => {\n        if (rsp.code == 9) {\n          this.form = rsp.data;\n          this.isCreate = 1;\n          this.formButtonName = '立即保存';\n        }\n      });\n\n    },\n    methods: {\n      //表单操作\n      submitForm(formName) {\n        this.$refs[formName].validate((valid) => {\n          if (valid) {\n            if (this.isCreate == 1) {\n              this.submit(true);\n            } else {\n              this.submit(false);\n            }\n          } else {\n            this.$message.error('提交错误');\n            return false;\n          }\n        });\n      },\n      submit(isUpdate) {\n\n        let data = this.form;\n\n        let url = \"baiduMapApi/create\";\n        if (isUpdate == true) {\n          data.id = this.$route.params.id;\n          url = \"baiduMapApi/update\";\n        }\n\n        this.$axios({\n          method: 'post',\n          url: url,\n          data:this.$qs.stringify(data),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      resetForm(formName) {\n        this.$refs[formName].resetFields();\n      },\n    },\n    data() {\n      return {\n        //收起放下\n        searchWorkspace: true,\n\n        formButtonName: '立即创建',\n\n        isCreate: 0,\n\n        //表单配置\n        form: {\n          appkey: '',\n        },\n        forms: {\n          appkey: [\n            {required: true, message: '请填写appkey', trigger: 'blur'},\n          ],\n        },\n\n      }\n    }\n  }\n</script>\n\n<style>\n  .common-width {\n    width: 500px;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/config/email_account_form.vue",
    "content": "<template>\n\n  <div id=\"app\">\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\">\n\n        <el-card shadow=\"always\" v-show=\"searchWorkspace == false\" style=\"text-align: center\">\n          <i class=\"el-icon-upload\"></i>\n          <span> 操作</span>\n          <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card class=\"box-card\" shadow=\"always\" v-show=\"searchWorkspace == true\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-upload\"></i>\n            <span> 操作</span>\n            <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :model=\"form\" :rules=\"forms\" :status-icon=\"true\"\n                   ref=\"form\" label-width=\"100px\" class=\"demo-ruleForm\">\n\n            <el-form-item label=\"用户名\" prop=\"username\">\n              <el-input v-model=\"form.username\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item label=\"用户密码\" prop=\"password\">\n              <el-input v-model=\"form.password\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item label=\"是否使用\" prop=\"isUse\">\n              <el-radio-group v-model=\"form.isUse\" size=\"medium\">\n                <el-radio border :label=0 >可用</el-radio>\n                <el-radio border :label=1 >停用</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"submitForm('form')\">{{ formButtonName }}</el-button>\n              <el-button @click=\"resetForm('form')\">重置</el-button>\n            </el-form-item>\n\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n\n</template>\n\n<script>\n  export default {\n    mounted() {\n\n      if (this.$route.params.id != null) {\n\n        this.$axios.get(\"emailAccount/single\",{\n          params: {\n            emailAccountId: this.$route.params.id,\n          }\n        }).then((rsp) => {\n          this.form =rsp.data;\n        });\n\n        this.formButtonName = '立即保存';\n      }\n\n    },\n    methods: {\n      //上一页\n      openExpress() {\n        this.$router.push({\n          name: 'EmailAccountList',\n        })\n      },\n      //表单操作\n      submitForm(formName) {\n        this.$refs[formName].validate((valid) => {\n          if (valid) {\n            if (this.$route.params.id != null) {\n              this.submit(true);\n            } else {\n              this.submit(false);\n            }\n          } else {\n            this.$message.error('提交错误');\n            return false;\n          }\n        });\n      },\n      submit(isUpdate) {\n\n        let data = this.form;\n\n        let url = \"emailAccount/create\";\n        if (isUpdate == true) {\n          data.id = this.$route.params.id;\n          url = \"emailAccount/update\";\n        }\n\n        this.$axios({\n          method: 'post',\n          url: url,\n          data:this.$qs.stringify(data),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      resetForm(formName) {\n        this.$refs[formName].resetFields();\n      },\n    },\n    data() {\n      return {\n        //收起放下\n        searchWorkspace: true,\n\n        formButtonName: '立即创建',\n\n        emailNotificatio: true,\n        registerStatus: true,\n        serviceStatus: true,\n\n        //表单配置\n        form: {\n          username: '',\n          password: '',\n          isUse: 0,\n        },\n        forms: {\n          username: [\n            {required: true, message: '请填写邮箱名称', trigger: 'blur'},\n            { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }\n          ],\n          password: [\n            {required: true, message: '请填写密码', trigger: 'blur'},\n            {min: 1, max: 255, message: '长度在 1 到 255 个字符', trigger: 'blur'}\n          ],\n          isUse: [\n            {required: true, message: '请勾选使用状态', trigger: 'blur'},\n          ],\n        },\n\n      }\n    }\n  }\n</script>\n\n<style>\n  .common-width {\n    width: 500px;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/config/email_account_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--按钮操作区-->\n          <el-button type=\"primary\" @click=\"openForm\"><i class=\"el-icon-plus\"/> 添加</el-button>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"创建时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"updateDate\"\n              label=\"更新时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"username\"\n              label=\"用户名\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"password\"\n              align=\"center\"\n              label=\"用户密码\"\n            />\n            <el-table-column\n              prop=\"isUse\"\n              align=\"center\"\n              label=\"是否使用\"\n            />\n            <el-table-column\n              prop=\"total\"\n              align=\"center\"\n              label=\"被使用的次数\"\n            />\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" @click=\"updateRow(scope.row)\">编辑</el-button>\n                <el-button type=\"text\" size=\"small\" style=\"color: red\" @click=\"removeRow(scope.row)\">删除</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n          <!--分页-->\n          <!-- <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/> -->\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      // 搜索表单\n      seachForm: {\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200]\n    }\n  },\n  mounted() {\n    this.getTableData()\n  },\n  methods: {\n    openForm(params) {\n      params = params || {}\n      params.id = params.id || null\n      this.$router.push({\n        name: 'EmailAccountForm',\n        params: params\n      })\n    },\n    getTableData() {\n      \n      // let data = this.seachForm\n      // data.current = this.tablePageNum\n      // data.size = this.tablePageSize\n\n      this.$axios.get('emailAccount/list').then((rsp) => {\n        // this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.length; i++) {\n          rsp.data[i].createDate = time.timeStampDate({time:rsp.data[i].createDate})\n          rsp.data[i].updateDate = time.timeStampDate({time:rsp.data[i].updateDate})\n          rsp.data[i].isUse = (rsp.data[i].isUse == 0) ? \"可用\" : \"停用\"\n        }\n        this.tableData = rsp.data\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      }\n      this.getTableData()\n    },\n    updateRow(row) {\n      this.openForm({ id: row.id })\n    },\n    removeRow(row) {\n      this.$axios.post('emailAccount/remove', this.$qs.stringify({\n        emailAccountId: row.id\n      })).then((rsp) => {\n        this.search()\n        this.$message(rsp.msg)\n      })\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/dashboard/index.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <el-row type=\"flex\" style=\"padding-top: 10px\">\n      <el-col :span=\"2\"></el-col>\n      <el-col :span=\"20\">\n        <el-card shadow=\"always\" style=\"text-align: center\">\n          <i class=\"el-icon-star-on\"></i>\n          软件数量：{{softCount}}\n          <i class=\"el-icon-star-on\"></i>\n        </el-card>\n      </el-col>\n      <el-col :span=\"2\"></el-col>\n    </el-row>\n\n    <el-row type=\"flex\" style=\"padding-top: 10px\">\n      <el-col :span=\"2\"></el-col>\n      <el-col :span=\"20\">\n        <el-card shadow=\"always\" style=\"text-align: center\">\n          <i class=\"el-icon-star-on\"></i>\n          卡密数量：{{cardCount}}\n          <i class=\"el-icon-star-on\"></i>\n        </el-card>\n      </el-col>\n      <el-col :span=\"2\"></el-col>\n    </el-row>\n\n    <el-row type=\"flex\" style=\"padding-top: 10px\">\n      <el-col :span=\"2\"></el-col>\n      <el-col :span=\"20\">\n        <el-card shadow=\"always\" style=\"text-align: center\">\n          <i class=\"el-icon-star-on\"></i>\n          用户数量：{{accountCount}}\n          <i class=\"el-icon-star-on\"></i>\n        </el-card>\n      </el-col>\n      <el-col :span=\"2\"></el-col>\n    </el-row>\n\n    <el-row type=\"flex\" style=\"padding-top: 10px\">\n      <el-col :span=\"2\"></el-col>\n      <el-col :span=\"20\">\n        <el-card shadow=\"always\" style=\"text-align: center\">\n          <!-- 登陆次数 -->\n          <div id=\"login\" style=\"width:100%; height:400px;\"></div>\n          <!-- 注册次数 -->\n          <div id=\"register\" style=\"width:100%; height:400px;\"></div>\n        </el-card>\n      </el-col>\n      <el-col :span=\"2\"></el-col>\n    </el-row>\n\n  </div>\n</template>\n\n<script>\nexport default {\n  mounted() {\n\n    let date = this.getDate();\n\n    this.loginbar.xAxis[0].data = date;\n    this.registerbar.xAxis[0].data = date;\n\n    var loginDateMap = new Map();\n    var registerDateMap = new Map();\n\n    for (let i = 0;i < date.length;i++) {\n      loginDateMap.set(date[i],0);\n      registerDateMap.set(date[i],0);\n    }\n\n    this.$axios.get(\"accountLoginLog/getBeforeData?softId=\").then((rsp) => {\n      for (let i = 0;i < rsp.data.length;i++) {\n        let data = rsp.data[i].split(\" \");\n        let d = data[0];\n\n        for (let x of loginDateMap) {\n          if (x[0] == d) {\n            loginDateMap.set(x[0],x[1]+1);\n          }\n        }\n\n      }\n      for (let xx of loginDateMap) {\n        this.loginbar.series[0].data.push(xx[1]);\n      }\n\n      let login = this.$echarts.init(document.getElementById(\"login\"));\n      login.setOption(this.loginbar);\n    })\n    this.$axios.get(\"accountRegisterLog/getBeforeData?softId=\").then((rsp) => {\n      for (let i = 0;i < rsp.data.length;i++) {\n        let data = rsp.data[i].split(\" \");\n        let d = data[0];\n\n        for (let x of registerDateMap) {\n          if (x[0] == d) {\n            registerDateMap.set(x[0],x[1]+1);\n          }\n        }\n\n      }\n      for (let xx of registerDateMap) {\n        this.registerbar.series[0].data.push(xx[1]);\n      }\n\n      let register = this.$echarts.init(document.getElementById(\"register\"));\n      register.setOption(this.registerbar);\n    })\n\n\n\n    this.$axios.get(\"soft/count\").then((rsp) => {\n      this.softCount = rsp.data\n    })\n    this.$axios.get(\"card/count\").then((rsp) => {\n      this.cardCount = rsp.data\n    })\n    this.$axios.get(\"account/count\").then((rsp) => {\n      this.accountCount = rsp.data\n    })\n\n  },\n  data() {\n    return {\n      activeNames: ['1'],\n      softCount: 0,\n      cardCount: 0,\n      accountCount: 0,\n      loginbar:{\n        title : {\n          text: '登陆次数',\n          subtext: '登陆次数'\n        },\n        tooltip : {\n          trigger: 'axis'\n        },\n        legend: {\n          data:['登陆次数']\n        },\n        toolbox: {\n          show : true,\n          feature : {\n            dataView : {show: true, readOnly: false},\n            magicType : {show: true, type: ['line', 'bar']},\n            restore : {show: true},\n            saveAsImage : {show: true}\n          }\n        },\n        calculable : true,\n        xAxis : [\n          {\n            type : 'category',\n            data : [],\n          }\n        ],\n        yAxis : [\n          {\n            type : 'value'\n          }\n        ],\n        series : [\n          {\n            name:'登陆次数',\n            type:'bar',\n            data:[],\n            markPoint : {\n              data : [\n                {type : 'max', name: '最大值'},\n                {type : 'min', name: '最小值'}\n              ]\n            },\n            markLine : {\n              data : [\n                {type : 'average', name: '平均值'}\n              ]\n            }\n          },\n        ]\n      },\n      registerbar:{\n        title : {\n          text: '注册次数',\n          subtext: '注册次数'\n        },\n        tooltip : {\n          trigger: 'axis'\n        },\n        legend: {\n          data:['注册次数']\n        },\n        toolbox: {\n          show : true,\n          feature : {\n            dataView : {show: true, readOnly: false},\n            magicType : {show: true, type: ['line', 'bar']},\n            restore : {show: true},\n            saveAsImage : {show: true}\n          }\n        },\n        calculable : true,\n        xAxis : [\n          {\n            type : 'category',\n            data : [],\n          }\n        ],\n        yAxis : [\n          {\n            type : 'value'\n          }\n        ],\n        series : [\n          {\n            name:'注册次数',\n            type:'bar',\n            data:[],\n            markPoint : {\n              data : [\n                {type : 'max', name: '最大值'},\n                {type : 'min', name: '最小值'}\n              ]\n            },\n            markLine : {\n              data : [\n                {type : 'average', name: '平均值'}\n              ]\n            }\n          },\n        ]\n      },\n    }\n  },\n  methods: {\n    getDay(time){\n      var now = new Date();//获取当前时间\n\n      var nowMs = now.getTime();//获取当前时间的毫秒数\n\n      var beforeMs =  nowMs -  1000 * 60 * 60 * 24 * parseInt(time);//前几天，n就取几，整数\n\n      var beforeDate = new Date().setTime(beforeMs);\n\n      let date = new Date(beforeDate);\n      let year = date.getFullYear();\n      let month = date.getMonth()+1;\n      let day = date.getDate();\n      month = month < 10 ? \"0\"+month:month;\n      day = day < 10 ? \"0\"+day:day;\n      beforeDate = year+'-'+month+'-'+day;\n      return beforeDate;\n    },\n    getDate() {\n      let date = [];\n      for (let i = 7;i >= 0;i--) {\n        date.push(this.getDay(i));\n      }\n      return date;\n    },\n}\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/interface/interface_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"remarks\"\n              label=\"接口备注\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"key\"\n              label=\"KEY\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"visit\"\n              label=\"是否开放接口\"\n              align=\"center\"\n            >\n              <template slot-scope=\"scope\">\n                <el-switch\n                  @change=\"visitChange($event,scope.row)\"\n                  v-model=\"scope.row.visit\"\n                  active-color=\"#13ce66\"\n                  inactive-color=\"#ff4949\">\n                </el-switch>\n              </template>\n            </el-table-column>\n            <el-table-column\n              prop=\"ipHandle\"\n              label=\"IP限流\"\n              align=\"center\"\n            >\n              <template slot-scope=\"scope\">\n                <el-switch\n                  @change=\"ipHandleChange($event,scope.row)\"\n                  v-model=\"scope.row.ipHandle\"\n                  active-color=\"#13ce66\"\n                  inactive-color=\"#ff4949\">\n                </el-switch>\n              </template>\n            </el-table-column>\n            <el-table-column\n              prop=\"ipVisits\"\n              align=\"center\"\n              label=\"间隔次数\"\n            >\n              <template slot-scope=\"scope\">\n                <el-input\n                  v-model=\"scope.row.ipVisits\"\n                  clearable>\n                </el-input>\n              </template>\n            </el-table-column>\n            <el-table-column\n              prop=\"ipRedisInterval\"\n              label=\"缓存时间(分钟)\"\n              align=\"center\"\n            >\n              <template slot-scope=\"scope\">\n                <el-input\n                  v-model=\"scope.row.ipRedisInterval\"\n                  clearable>\n                </el-input>\n              </template>\n            </el-table-column>\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" @click=\"updateRow(scope.row)\">确认修改</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  export default {\n    data() {\n      return {\n        // 控制两块区域是否显示\n        searchWorkspace: true,\n        workingArea: true,\n\n        // 表格\n        tableData: [],\n      }\n    },\n    mounted() {\n      this.getTableData()\n    },\n    methods: {\n      openForm(params) {\n        params = params || {}\n        params.id = params.id || null\n        this.$router.push({\n          name: 'InterfaceForm',\n          params: params\n        })\n      },\n      getTableData() {\n\n        this.$axios.get('interfaceManagement/list').then((rsp) => {\n\n          for (let i = 0; i < rsp.data.length; i++) {\n            rsp.data[i].visit = (rsp.data[i].visit == 0) ? false : true;\n            rsp.data[i].ipHandle = (rsp.data[i].ipHandle == 0) ? false : true;\n          }\n          this.tableData = rsp.data\n\n        })\n      },\n      search(isPrompt) {\n        if (isPrompt == true) {\n          this.$message.success('执行刷新数据成功...')\n        }\n        this.getTableData()\n      },\n      updateRow(row) {\n        let form = {\n          key: row.key,\n          ipVisits: row.ipVisits,\n          ipRedisInterval: row.ipRedisInterval,\n        };\n        this.$axios({\n          method: 'post',\n          url: 'interfaceManagement/update',\n          data: this.$qs.stringify(form),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      visitChange(value,row) {\n\n        this.$axios.post('interfaceManagement/closeInterface', this.$qs.stringify({\n          key: row.key,\n          on: value ? 1 : 0\n        })).then((rsp) => {\n          this.getTableData();\n          this.$message(rsp.msg)\n        })\n      },\n      ipHandleChange(value,row) {\n\n        this.$axios.post('interfaceManagement/ipHandle', this.$qs.stringify({\n          key: row.key,\n          on: value ? 1 : 0\n        })).then((rsp) => {\n          this.getTableData();\n          this.$message(rsp.msg)\n        })\n      },\n    }\n  }\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/Layout.vue",
    "content": "<template>\n  <div :class=\"classObj\" class=\"app-wrapper\">\n    <div v-if=\"device==='mobile'&&sidebar.opened\" class=\"drawer-bg\" @click=\"handleClickOutside\"/>\n    <sidebar class=\"sidebar-container\"/>\n    <div class=\"main-container\">\n      <navbar/>\n      <app-main/>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { Navbar, Sidebar, AppMain } from './components'\nimport ResizeMixin from './mixin/ResizeHandler'\n\nexport default {\n  name: 'Layout',\n  components: {\n    Navbar,\n    Sidebar,\n    AppMain\n  },\n  mixins: [ResizeMixin],\n  computed: {\n    sidebar() {\n      return this.$store.state.app.sidebar\n    },\n    device() {\n      return this.$store.state.app.device\n    },\n    classObj() {\n      return {\n        hideSidebar: !this.sidebar.opened,\n        openSidebar: this.sidebar.opened,\n        withoutAnimation: this.sidebar.withoutAnimation,\n        mobile: this.device === 'mobile'\n      }\n    }\n  },\n  methods: {\n    handleClickOutside() {\n      this.$store.dispatch('CloseSideBar', { withoutAnimation: false })\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n  @import \"src/styles/mixin.scss\";\n  .app-wrapper {\n    @include clearfix;\n    position: relative;\n    height: 100%;\n    width: 100%;\n    &.mobile.openSidebar{\n      position: fixed;\n      top: 0;\n    }\n  }\n  .drawer-bg {\n    background: #000;\n    opacity: 0.3;\n    width: 100%;\n    top: 0;\n    height: 100%;\n    position: absolute;\n    z-index: 999;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/AppMain.vue",
    "content": "<template>\n  <section class=\"app-main\">\n    <transition name=\"fade-transform\" mode=\"out-in\">\n      <!-- or name=\"fade\" -->\n      <!-- <router-view :key=\"key\"></router-view> -->\n      <router-view/>\n    </transition>\n  </section>\n</template>\n\n<script>\nexport default {\n  name: 'AppMain',\n  computed: {\n    // key() {\n    //   return this.$route.name !== undefined ? this.$route.name + +new Date() : this.$route + +new Date()\n    // }\n  }\n}\n</script>\n\n<style scoped>\n.app-main {\n  /*50 = navbar  */\n  min-height: calc(100vh - 50px);\n  position: relative;\n  overflow: hidden;\n}\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/Navbar.vue",
    "content": "<template>\n  <el-menu class=\"navbar\" mode=\"horizontal\">\n    <hamburger :toggle-click=\"toggleSideBar\" :is-active=\"sidebar.opened\" class=\"hamburger-container\"/>\n    <breadcrumb />\n    <el-dropdown class=\"avatar-container\" trigger=\"click\">\n      <div class=\"avatar-wrapper\">\n        <!--<img :src=\"avatar+'?imageView2/1/w/80/h/80'\" class=\"user-avatar\">-->\n        <img :src=\"'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif?imageView2/1/w/80/h/80'\" class=\"user-avatar\">\n        <i class=\"el-icon-caret-bottom\"/>\n      </div>\n      <el-dropdown-menu slot=\"dropdown\" class=\"user-dropdown\">\n        <router-link class=\"inlineBlock\" to=\"/\">\n          <el-dropdown-item>\n            首页\n          </el-dropdown-item>\n        </router-link>\n        <el-dropdown-item divided>\n          <span style=\"display:block;\" @click=\"logout\">退出</span>\n        </el-dropdown-item>\n      </el-dropdown-menu>\n    </el-dropdown>\n  </el-menu>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nimport Breadcrumb from '@/components/Breadcrumb'\nimport Hamburger from '@/components/Hamburger'\n\nexport default {\n  components: {\n    Breadcrumb,\n    Hamburger\n  },\n  computed: {\n    ...mapGetters([\n      'sidebar',\n      'avatar'\n    ])\n  },\n  methods: {\n    toggleSideBar() {\n      this.$store.dispatch('ToggleSideBar')\n    },\n    logout() {\n      this.$store.dispatch('LogOut').then(() => {\n        location.reload() // 为了重新实例化vue-router对象 避免bug\n      })\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.navbar {\n  height: 50px;\n  line-height: 50px;\n  border-radius: 0px !important;\n  .hamburger-container {\n    line-height: 58px;\n    height: 50px;\n    float: left;\n    padding: 0 10px;\n  }\n  .screenfull {\n    position: absolute;\n    right: 90px;\n    top: 16px;\n    color: red;\n  }\n  .avatar-container {\n    height: 50px;\n    display: inline-block;\n    position: absolute;\n    right: 35px;\n    .avatar-wrapper {\n      cursor: pointer;\n      margin-top: 5px;\n      position: relative;\n      line-height: initial;\n      .user-avatar {\n        width: 40px;\n        height: 40px;\n        border-radius: 10px;\n      }\n      .el-icon-caret-bottom {\n        position: absolute;\n        right: -20px;\n        top: 25px;\n        font-size: 12px;\n      }\n    }\n  }\n}\n</style>\n\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/Sidebar/Item.vue",
    "content": "<script>\nexport default {\n  name: 'MenuItem',\n  functional: true,\n  props: {\n    icon: {\n      type: String,\n      default: ''\n    },\n    title: {\n      type: String,\n      default: ''\n    }\n  },\n  render(h, context) {\n    const { icon, title } = context.props\n    const vnodes = []\n\n    if (icon) {\n      vnodes.push(<svg-icon icon-class={icon}/>)\n    }\n\n    if (title) {\n      vnodes.push(<span slot='title'>{(title)}</span>)\n    }\n    return vnodes\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/Sidebar/Link.vue",
    "content": "\n<template>\n  <!-- eslint-disable vue/require-component-is-->\n  <component v-bind=\"linkProps(to)\">\n    <slot/>\n  </component>\n</template>\n\n<script>\nimport { isExternal } from '@/utils'\n\nexport default {\n  props: {\n    to: {\n      type: String,\n      required: true\n    }\n  },\n  methods: {\n    isExternalLink(routePath) {\n      return isExternal(routePath)\n    },\n    linkProps(url) {\n      if (this.isExternalLink(url)) {\n        return {\n          is: 'a',\n          href: url,\n          target: '_blank',\n          rel: 'noopener'\n        }\n      }\n      return {\n        is: 'router-link',\n        to: url\n      }\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/Sidebar/SidebarItem.vue",
    "content": "<template>\n  <div v-if=\"!item.hidden&&item.children\" class=\"menu-wrapper\">\n\n    <template v-if=\"hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow\">\n      <app-link :to=\"resolvePath(onlyOneChild.path)\">\n        <el-menu-item :index=\"resolvePath(onlyOneChild.path)\" :class=\"{'submenu-title-noDropdown':!isNest}\">\n          <item v-if=\"onlyOneChild.meta\" :icon=\"onlyOneChild.meta.icon||item.meta.icon\" :title=\"onlyOneChild.meta.title\" />\n        </el-menu-item>\n      </app-link>\n    </template>\n\n    <el-submenu v-else :index=\"resolvePath(item.path)\">\n      <template slot=\"title\">\n        <item v-if=\"item.meta\" :icon=\"item.meta.icon\" :title=\"item.meta.title\" />\n      </template>\n\n      <template v-for=\"child in item.children\" v-if=\"!child.hidden\">\n        <sidebar-item\n          v-if=\"child.children&&child.children.length>0\"\n          :is-nest=\"true\"\n          :item=\"child\"\n          :key=\"child.path\"\n          :base-path=\"resolvePath(child.path)\"\n          class=\"nest-menu\" />\n        <app-link v-else :to=\"resolvePath(child.path)\" :key=\"child.name\">\n          <el-menu-item :index=\"resolvePath(child.path)\">\n            <item v-if=\"child.meta\" :icon=\"child.meta.icon\" :title=\"child.meta.title\" />\n          </el-menu-item>\n        </app-link>\n      </template>\n    </el-submenu>\n\n  </div>\n</template>\n\n<script>\nimport path from 'path'\nimport { isExternal } from '@/utils'\nimport Item from './Item'\nimport AppLink from './Link'\n\nexport default {\n  name: 'SidebarItem',\n  components: { Item, AppLink },\n  props: {\n    // route object\n    item: {\n      type: Object,\n      required: true\n    },\n    isNest: {\n      type: Boolean,\n      default: false\n    },\n    basePath: {\n      type: String,\n      default: ''\n    }\n  },\n  data() {\n    return {\n      onlyOneChild: null\n    }\n  },\n  methods: {\n    hasOneShowingChild(children, parent) {\n      const showingChildren = children.filter(item => {\n        if (item.hidden) {\n          return false\n        } else {\n          // Temp set(will be used if only has one showing child)\n          this.onlyOneChild = item\n          return true\n        }\n      })\n\n      // When there is only one child router, the child router is displayed by default\n      if (showingChildren.length === 1) {\n        return true\n      }\n\n      // Show parent if there are no child router to display\n      if (showingChildren.length === 0) {\n        this.onlyOneChild = { ... parent, path: '', noShowingChildren: true }\n        return true\n      }\n\n      return false\n    },\n    resolvePath(routePath) {\n      if (this.isExternalLink(routePath)) {\n        return routePath\n      }\n      return path.resolve(this.basePath, routePath)\n    },\n    isExternalLink(routePath) {\n      return isExternal(routePath)\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/Sidebar/index.vue",
    "content": "<template>\n  <el-scrollbar wrap-class=\"scrollbar-wrapper\">\n    <el-menu\n      :show-timeout=\"200\"\n      :default-active=\"$route.path\"\n      :collapse=\"isCollapse\"\n      mode=\"vertical\"\n      background-color=\"#304156\"\n      text-color=\"#bfcbd9\"\n      active-text-color=\"#409EFF\"\n    >\n      <sidebar-item v-for=\"route in routes\" :key=\"route.path\" :item=\"route\" :base-path=\"route.path\"/>\n    </el-menu>\n  </el-scrollbar>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nimport SidebarItem from './SidebarItem'\n\nexport default {\n  components: { SidebarItem },\n  computed: {\n    ...mapGetters([\n      'sidebar'\n    ]),\n    routes() {\n      return this.$router.options.routes\n    },\n    isCollapse() {\n      return !this.sidebar.opened\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/TagsView.vue",
    "content": "<template>\n  <div class=\"tags-view-container\">\n    <scroll-pane ref=\"scrollPane\" class=\"tags-view-wrapper\">\n      <router-link\n        v-for=\"tag in visitedViews\"\n        ref=\"tag\"\n        :class=\"isActive(tag)?'active':''\"\n        :to=\"{ path: tag.path, query: tag.query, fullPath: tag.fullPath }\"\n        :key=\"tag.path\"\n        tag=\"span\"\n        class=\"tags-view-item\"\n        @click.middle.native=\"closeSelectedTag(tag)\"\n        @contextmenu.prevent.native=\"openMenu(tag,$event)\">\n        {{ generateTitle(tag.title) }}\n        <span class=\"el-icon-close\" @click.prevent.stop=\"closeSelectedTag(tag)\" />\n      </router-link>\n    </scroll-pane>\n    <ul v-show=\"visible\" :style=\"{left:left+'px',top:top+'px'}\" class=\"contextmenu\">\n      <li @click=\"refreshSelectedTag(selectedTag)\">{{ $t('tagsView.refresh') }}</li>\n      <li @click=\"closeSelectedTag(selectedTag)\">{{ $t('tagsView.close') }}</li>\n      <li @click=\"closeOthersTags\">{{ $t('tagsView.closeOthers') }}</li>\n      <li @click=\"closeAllTags\">{{ $t('tagsView.closeAll') }}</li>\n    </ul>\n  </div>\n</template>\n\n<script>\nimport ScrollPane from '@/components/ScrollPane'\nimport { generateTitle } from '@/utils/i18n'\n\nexport default {\n  components: { ScrollPane },\n  data() {\n    return {\n      visible: false,\n      top: 0,\n      left: 0,\n      selectedTag: {}\n    }\n  },\n  computed: {\n    visitedViews() {\n      return this.$store.state.tagsView.visitedViews\n    }\n  },\n  watch: {\n    $route() {\n      this.addViewTags()\n      this.moveToCurrentTag()\n    },\n    visible(value) {\n      if (value) {\n        document.body.addEventListener('click', this.closeMenu)\n      } else {\n        document.body.removeEventListener('click', this.closeMenu)\n      }\n    }\n  },\n  mounted() {\n    this.addViewTags()\n  },\n  methods: {\n    generateTitle, // generateTitle by vue-i18n\n    isActive(route) {\n      return route.path === this.$route.path\n    },\n    addViewTags() {\n      const { name } = this.$route\n      if (name) {\n        this.$store.dispatch('addView', this.$route)\n      }\n      return false\n    },\n    moveToCurrentTag() {\n      const tags = this.$refs.tag\n      this.$nextTick(() => {\n        for (const tag of tags) {\n          if (tag.to.path === this.$route.path) {\n            this.$refs.scrollPane.moveToTarget(tag)\n\n            // when query is different then update\n            if (tag.to.fullPath !== this.$route.fullPath) {\n              this.$store.dispatch('updateVisitedView', this.$route)\n            }\n\n            break\n          }\n        }\n      })\n    },\n    refreshSelectedTag(view) {\n      this.$store.dispatch('delCachedView', view).then(() => {\n        const { fullPath } = view\n        this.$nextTick(() => {\n          this.$router.replace({\n            path: '/redirect' + fullPath\n          })\n        })\n      })\n    },\n    closeSelectedTag(view) {\n      this.$store.dispatch('delView', view).then(({ visitedViews }) => {\n        if (this.isActive(view)) {\n          const latestView = visitedViews.slice(-1)[0]\n          if (latestView) {\n            this.$router.push(latestView)\n          } else {\n            this.$router.push('/')\n          }\n        }\n      })\n    },\n    closeOthersTags() {\n      this.$router.push(this.selectedTag)\n      this.$store.dispatch('delOthersViews', this.selectedTag).then(() => {\n        this.moveToCurrentTag()\n      })\n    },\n    closeAllTags() {\n      this.$store.dispatch('delAllViews')\n      this.$router.push('/')\n    },\n    openMenu(tag, e) {\n      const menuMinWidth = 105\n      const offsetLeft = this.$el.getBoundingClientRect().left // container margin left\n      const offsetWidth = this.$el.offsetWidth // container width\n      const maxLeft = offsetWidth - menuMinWidth // left boundary\n      const left = e.clientX - offsetLeft + 15 // 15: margin right\n\n      if (left > maxLeft) {\n        this.left = maxLeft\n      } else {\n        this.left = left\n      }\n      this.top = e.clientY\n\n      this.visible = true\n      this.selectedTag = tag\n    },\n    closeMenu() {\n      this.visible = false\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.tags-view-container {\n  height: 34px;\n  width: 100%;\n  background: #fff;\n  border-bottom: 1px solid #d8dce5;\n  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);\n  .tags-view-wrapper {\n    .tags-view-item {\n      display: inline-block;\n      position: relative;\n      cursor: pointer;\n      height: 26px;\n      line-height: 26px;\n      border: 1px solid #d8dce5;\n      color: #495060;\n      background: #fff;\n      padding: 0 8px;\n      font-size: 12px;\n      margin-left: 5px;\n      margin-top: 4px;\n      &:first-of-type {\n        margin-left: 15px;\n      }\n      &:last-of-type {\n        margin-right: 15px;\n      }\n      &.active {\n        background-color: #42b983;\n        color: #fff;\n        border-color: #42b983;\n        &::before {\n          content: '';\n          background: #fff;\n          display: inline-block;\n          width: 8px;\n          height: 8px;\n          border-radius: 50%;\n          position: relative;\n          margin-right: 2px;\n        }\n      }\n    }\n  }\n  .contextmenu {\n    margin: 0;\n    background: #fff;\n    z-index: 100;\n    position: absolute;\n    list-style-type: none;\n    padding: 5px 0;\n    border-radius: 4px;\n    font-size: 12px;\n    font-weight: 400;\n    color: #333;\n    box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);\n    li {\n      margin: 0;\n      padding: 7px 16px;\n      cursor: pointer;\n      &:hover {\n        background: #eee;\n      }\n    }\n  }\n}\n</style>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\">\n//reset element css of el-icon-close\n.tags-view-wrapper {\n  .tags-view-item {\n    .el-icon-close {\n      width: 16px;\n      height: 16px;\n      vertical-align: 2px;\n      border-radius: 50%;\n      text-align: center;\n      transition: all .3s cubic-bezier(.645, .045, .355, 1);\n      transform-origin: 100% 50%;\n      &:before {\n        transform: scale(.6);\n        display: inline-block;\n        vertical-align: -3px;\n      }\n      &:hover {\n        background-color: #b4bccc;\n        color: #fff;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/layout/components/index.js",
    "content": "export { default as Navbar } from './Navbar'\nexport { default as Sidebar } from './Sidebar'\nexport { default as AppMain } from './AppMain'\n"
  },
  {
    "path": "admin-web-page/src/views/layout/mixin/ResizeHandler.js",
    "content": "import store from '@/store'\n\nconst { body } = document\nconst WIDTH = 1024\nconst RATIO = 3\n\nexport default {\n  watch: {\n    $route(route) {\n      if (this.device === 'mobile' && this.sidebar.opened) {\n        store.dispatch('CloseSideBar', { withoutAnimation: false })\n      }\n    }\n  },\n  beforeMount() {\n    window.addEventListener('resize', this.resizeHandler)\n  },\n  mounted() {\n    const isMobile = this.isMobile()\n    if (isMobile) {\n      store.dispatch('ToggleDevice', 'mobile')\n      store.dispatch('CloseSideBar', { withoutAnimation: true })\n    }\n  },\n  methods: {\n    isMobile() {\n      const rect = body.getBoundingClientRect()\n      return rect.width - RATIO < WIDTH\n    },\n    resizeHandler() {\n      if (!document.hidden) {\n        const isMobile = this.isMobile()\n        store.dispatch('ToggleDevice', isMobile ? 'mobile' : 'desktop')\n\n        if (isMobile) {\n          store.dispatch('CloseSideBar', { withoutAnimation: true })\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "admin-web-page/src/views/log/soft_login_log_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--按钮操作区-->\n          <el-button type=\"primary\" @click=\"openForm\"><i class=\"el-icon-plus\"/> 添加</el-button>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"访问时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"softName\"\n              label=\"软件名称\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"accountName\"\n              label=\"用户名\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"ip\"\n              label=\"IP\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"ipInfo\"\n              label=\"IP信息\"\n              align=\"center\"\n            />\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      softList: [],\n\n      // 搜索表单\n      seachForm: {\n        softId: \"\",\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200]\n    }\n  },\n  mounted() {\n    this.$axios.get('soft/list').then((rsp) => {\n      this.softList.push({\n        label: \"全部\",\n        value: \"\",\n      });\n      for (let i = 0;i < rsp.data.length;i++) {\n        this.softList.push({\n          label: rsp.data[i].name,\n          value: rsp.data[i].id,\n        });\n      }\n    });\n    this.getTableData();\n  },\n  methods: {\n    getTableData() {\n\n      let data = this.seachForm\n      data.current = this.tablePageNum\n      data.size = this.tablePageSize\n\n      this.$axios.get('accountLoginLog/page', {\n        params: data\n      }).then((rsp) => {\n        this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.records.length; i++) {\n          rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate});\n        }\n        this.tableData = rsp.data.records\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      } else {\n        this.tablePageNum = 1;\n      }\n      this.getTableData()\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/log/soft_map.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search(seachForm.softId)\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <el-row type=\"flex\" style=\"padding-top: 10px\">\n      <el-col :span=\"2\"></el-col>\n      <el-col :span=\"20\">\n        <el-card shadow=\"always\" style=\"text-align: center\">\n          <!-- 登陆次数 -->\n          <div id=\"login\" style=\"width:100%; height:400px;\"></div>\n          <!-- 注册次数 -->\n          <div id=\"register\" style=\"width:100%; height:400px;\"></div>\n        </el-card>\n      </el-col>\n      <el-col :span=\"2\"></el-col>\n    </el-row>\n\n  </div>\n</template>\n\n<script>\nexport default {\n  mounted() {\n\n    this.$axios.get('soft/list').then((rsp) => {\n      this.softList.push({\n        label: \"全部\",\n        value: \"\",\n      });\n      for (let i = 0;i < rsp.data.length;i++) {\n        this.softList.push({\n          label: rsp.data[i].name,\n          value: rsp.data[i].id,\n        });\n      }\n    });\n\n    this.search('');\n\n  },\n  data() {\n    return {\n\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n      softList: [],\n      // 搜索表单\n      seachForm: {\n        softId: \"\",\n      },\n\n      activeNames: ['1'],\n      softCount: 0,\n      cardCount: 0,\n      accountCount: 0,\n      loginbar:{\n        title : {\n          text: '登陆次数',\n          subtext: '登陆次数'\n        },\n        tooltip : {\n          trigger: 'axis'\n        },\n        legend: {\n          data:['登陆次数']\n        },\n        toolbox: {\n          show : true,\n          feature : {\n            dataView : {show: true, readOnly: false},\n            magicType : {show: true, type: ['line', 'bar']},\n            restore : {show: true},\n            saveAsImage : {show: true}\n          }\n        },\n        calculable : true,\n        xAxis : [\n          {\n            type : 'category',\n            data : [],\n          }\n        ],\n        yAxis : [\n          {\n            type : 'value'\n          }\n        ],\n        series : [\n          {\n            name:'登陆次数',\n            type:'bar',\n            data:[],\n            markPoint : {\n              data : [\n                {type : 'max', name: '最大值'},\n                {type : 'min', name: '最小值'}\n              ]\n            },\n            markLine : {\n              data : [\n                {type : 'average', name: '平均值'}\n              ]\n            }\n          },\n        ]\n      },\n      registerbar:{\n        title : {\n          text: '注册次数',\n          subtext: '注册次数'\n        },\n        tooltip : {\n          trigger: 'axis'\n        },\n        legend: {\n          data:['注册次数']\n        },\n        toolbox: {\n          show : true,\n          feature : {\n            dataView : {show: true, readOnly: false},\n            magicType : {show: true, type: ['line', 'bar']},\n            restore : {show: true},\n            saveAsImage : {show: true}\n          }\n        },\n        calculable : true,\n        xAxis : [\n          {\n            type : 'category',\n            data : [],\n          }\n        ],\n        yAxis : [\n          {\n            type : 'value'\n          }\n        ],\n        series : [\n          {\n            name:'注册次数',\n            type:'bar',\n            data:[],\n            markPoint : {\n              data : [\n                {type : 'max', name: '最大值'},\n                {type : 'min', name: '最小值'}\n              ]\n            },\n            markLine : {\n              data : [\n                {type : 'average', name: '平均值'}\n              ]\n            }\n          },\n        ]\n      },\n    }\n  },\n  methods: {\n    search(softId) {\n\n      let date = this.getDate();\n\n      this.loginbar.xAxis[0].data = date;\n      this.registerbar.xAxis[0].data = date;\n\n      var loginDateMap = new Map();\n      var registerDateMap = new Map();\n\n      for (let i = 0;i < date.length;i++) {\n        loginDateMap.set(date[i],0);\n        registerDateMap.set(date[i],0);\n      }\n\n      this.$axios.get(\"accountLoginLog/getBeforeData?softId=\"+softId).then((rsp) => {\n        for (let i = 0;i < rsp.data.length;i++) {\n          let data = rsp.data[i].split(\" \");\n          let d = data[0];\n\n          for (let x of loginDateMap) {\n            if (x[0] == d) {\n              loginDateMap.set(x[0],x[1]+1);\n            }\n          }\n\n        }\n        this.loginbar.series[0].data = [];\n        for (let xx of loginDateMap) {\n          this.loginbar.series[0].data.push(xx[1]);\n        }\n\n        let login = this.$echarts.init(document.getElementById(\"login\"));\n        login.setOption(this.loginbar);\n      })\n      this.$axios.get(\"accountRegisterLog/getBeforeData?softId=\"+softId).then((rsp) => {\n        for (let i = 0;i < rsp.data.length;i++) {\n          let data = rsp.data[i].split(\" \");\n          let d = data[0];\n\n          for (let x of registerDateMap) {\n            if (x[0] == d) {\n              registerDateMap.set(x[0],x[1]+1);\n            }\n          }\n\n        }\n        this.registerbar.series[0].data = [];\n        for (let xx of registerDateMap) {\n          this.registerbar.series[0].data.push(xx[1]);\n        }\n\n        let register = this.$echarts.init(document.getElementById(\"register\"));\n        register.setOption(this.registerbar);\n      })\n    },\n    getDay(time){\n      var now = new Date();//获取当前时间\n\n      var nowMs = now.getTime();//获取当前时间的毫秒数\n\n      var beforeMs =  nowMs -  1000 * 60 * 60 * 24 * parseInt(time);//前几天，n就取几，整数\n\n      var beforeDate = new Date().setTime(beforeMs);\n\n      let date = new Date(beforeDate);\n      let year = date.getFullYear();\n      let month = date.getMonth()+1;\n      let day = date.getDate();\n      month = month < 10 ? \"0\"+month:month;\n      day = day < 10 ? \"0\"+day:day;\n      beforeDate = year+'-'+month+'-'+day;\n      return beforeDate;\n    },\n    getDate() {\n      let date = [];\n      for (let i = 7;i >= 0;i--) {\n        date.push(this.getDay(i));\n      }\n      return date;\n    },\n}\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/log/soft_register_log_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--按钮操作区-->\n          <el-button type=\"primary\" @click=\"openForm\"><i class=\"el-icon-plus\"/> 添加</el-button>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"访问时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"softName\"\n              label=\"软件名称\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"accountName\"\n              label=\"用户名\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"ip\"\n              label=\"IP\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"ipInfo\"\n              label=\"IP信息\"\n              align=\"center\"\n            />\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      softList: [],\n\n      // 搜索表单\n      seachForm: {\n        softId: \"\",\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200]\n    }\n  },\n  mounted() {\n    this.$axios.get('soft/list').then((rsp) => {\n      this.softList.push({\n        label: \"全部\",\n        value: \"\",\n      });\n      for (let i = 0;i < rsp.data.length;i++) {\n        this.softList.push({\n          label: rsp.data[i].name,\n          value: rsp.data[i].id,\n        });\n      }\n    });\n    this.getTableData();\n  },\n  methods: {\n    getTableData() {\n\n      let data = this.seachForm\n      data.current = this.tablePageNum\n      data.size = this.tablePageSize\n\n      this.$axios.get('accountRegisterLog/page', {\n        params: data\n      }).then((rsp) => {\n        this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.records.length; i++) {\n          rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate});\n        }\n        this.tableData = rsp.data.records\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      } else {\n        this.tablePageNum = 1;\n      }\n      this.getTableData()\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/login/index.vue",
    "content": "<template>\n  <div class=\"login-container\">\n    <el-form ref=\"loginForm\" :model=\"loginForm\" :rules=\"loginRules\" class=\"login-form\" auto-complete=\"on\" label-position=\"left\">\n      <h3 class=\"title\">Orange Verify 网络验证系统</h3>\n      <el-form-item prop=\"username\">\n        <span class=\"svg-container\">\n          <svg-icon icon-class=\"user\" />\n        </span>\n        <el-input v-model=\"loginForm.username\" name=\"username\" type=\"text\" auto-complete=\"on\" placeholder=\"用户名\" />\n      </el-form-item>\n      <el-form-item prop=\"password\">\n        <span class=\"svg-container\">\n          <svg-icon icon-class=\"password\" />\n        </span>\n        <el-input\n          :type=\"pwdType\"\n          v-model=\"loginForm.password\"\n          name=\"password\"\n          auto-complete=\"on\"\n          placeholder=\"密码\"\n          @keyup.enter.native=\"handleLogin\" />\n        <span class=\"show-pwd\" @click=\"showPwd\">\n          <svg-icon icon-class=\"eye\" />\n        </span>\n      </el-form-item>\n      <el-form-item>\n        <el-button :loading=\"loading\" type=\"primary\" style=\"width:100%;\" @click.native.prevent=\"handleLogin\">\n          登 陆\n        </el-button>\n      </el-form-item>\n    </el-form>\n  </div>\n</template>\n\n<script>\n\nexport default {\n  name: 'Login',\n  data() {\n    return {\n      loginForm: {\n        username: '',\n        password: ''\n      },\n      loginRules: {\n        username: [{ required: true, trigger: 'blur'}],\n        password: [{ required: true, trigger: 'blur'}]\n      },\n      loading: false,\n      pwdType: 'password',\n      redirect: undefined\n    }\n  },\n  watch: {\n    $route: {\n      handler: function(route) {\n        this.redirect = route.query && route.query.redirect\n      },\n      immediate: true\n    }\n  },\n  methods: {\n    showPwd() {\n      if (this.pwdType === 'password') {\n        this.pwdType = ''\n      } else {\n        this.pwdType = 'password'\n      }\n    },\n    handleLogin() {\n      this.$refs.loginForm.validate(valid => {\n        if (valid) {\n          this.loading = true\n          this.$store.dispatch('Login', this.loginForm).then(() => {\n            this.loading = false\n            this.$router.push({ path: this.redirect || '/' })\n          }).catch(() => {\n            this.loading = false\n          })\n        } else {\n          this.$message.error(\"错误提交\");\n          return false\n        }\n      })\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\">\n$bg:#2d3a4b;\n$light_gray:#eee;\n\n/* reset element-ui css */\n.login-container {\n  .el-input {\n    display: inline-block;\n    height: 47px;\n    width: 85%;\n    input {\n      background: transparent;\n      border: 0px;\n      -webkit-appearance: none;\n      border-radius: 0px;\n      padding: 12px 5px 12px 15px;\n      color: $light_gray;\n      height: 47px;\n      &:-webkit-autofill {\n        -webkit-box-shadow: 0 0 0px 1000px $bg inset !important;\n        -webkit-text-fill-color: #fff !important;\n      }\n    }\n  }\n  .el-form-item {\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(0, 0, 0, 0.1);\n    border-radius: 5px;\n    color: #454545;\n  }\n}\n\n</style>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n$bg:#2d3a4b;\n$dark_gray:#889aa4;\n$light_gray:#eee;\n.login-container {\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  background-color: $bg;\n  .login-form {\n    position: absolute;\n    left: 0;\n    right: 0;\n    width: 520px;\n    max-width: 100%;\n    padding: 35px 35px 15px 35px;\n    margin: 120px auto;\n  }\n  .tips {\n    font-size: 14px;\n    color: #fff;\n    margin-bottom: 10px;\n    span {\n      &:first-of-type {\n        margin-right: 16px;\n      }\n    }\n  }\n  .svg-container {\n    padding: 6px 5px 6px 15px;\n    color: $dark_gray;\n    vertical-align: middle;\n    width: 30px;\n    display: inline-block;\n  }\n  .title {\n    font-size: 26px;\n    font-weight: 400;\n    color: $light_gray;\n    margin: 0px auto 40px auto;\n    text-align: center;\n    font-weight: bold;\n  }\n  .show-pwd {\n    position: absolute;\n    right: 10px;\n    top: 7px;\n    font-size: 16px;\n    color: $dark_gray;\n    cursor: pointer;\n    user-select: none;\n  }\n}\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/soft/soft_form.vue",
    "content": "<template>\n\n  <div id=\"app\">\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\">\n\n        <el-card shadow=\"always\" v-show=\"searchWorkspace == false\" style=\"text-align: center\">\n          <i class=\"el-icon-upload\"></i>\n          <span> 操作</span>\n          <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card class=\"box-card\" shadow=\"always\" v-show=\"searchWorkspace == true\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-upload\"></i>\n            <span> 操作</span>\n            <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :model=\"form\" :rules=\"forms\" :status-icon=\"true\"\n                   ref=\"form\" label-width=\"100px\" class=\"demo-ruleForm\">\n\n            <el-form-item label=\"软件名称\" prop=\"name\">\n              <el-input v-model=\"form.name\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item label=\"软件公告\" prop=\"notice\">\n              <el-input\n                v-model=\"form.notice\"\n                class=\"common-width\"\n                type=\"textarea\"\n                :rows=\"8\"\n                placeholder=\"请输入软件公告\"\n              >\n              </el-input>\n            </el-form-item>\n\n            <el-form-item label=\"换绑策略\" prop=\"changeStrategy\">\n              <el-radio-group v-model=\"form.changeStrategy\" size=\"medium\">\n                <el-radio border :label=0 >支持换绑定</el-radio>\n                <el-radio border :label=1 >不支持换绑定</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item label=\"多开策略\" prop=\"dosingStrategy\">\n              <el-radio-group v-model=\"form.dosingStrategy\" size=\"medium\">\n                <el-radio border :label=0 >只支持单机</el-radio>\n                <el-radio border :label=1 >无限制</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item label=\"软件被留言 是否邮件通知\" prop=\"emailNotificatio\">\n              <el-radio-group v-model=\"form.emailNotificatio\" size=\"medium\">\n                <el-radio border :label=0 @change=\"emailNotificatio = true\">通知</el-radio>\n                <el-radio border :label=1 @change=\"emailNotificatio = false\">不通知</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item v-if=\"emailNotificatio == true\" label=\"被通知的邮箱账户名\" prop=\"emailName\">\n              <el-input v-model=\"form.emailName\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item label=\"注册状态\" prop=\"registerStatus\">\n              <el-radio-group v-model=\"form.registerStatus\" size=\"medium\">\n                <el-radio border :label=0 @change=\"registerStatus = true\">开放注册</el-radio>\n                <el-radio border :label=1 @change=\"registerStatus = false\">关闭注册</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item v-if=\"registerStatus == false\" label=\"关闭注册后的返回信息\" prop=\"registeCloseMsg\">\n              <el-input\n                v-model=\"form.registeCloseMsg\"\n                class=\"common-width\"\n                type=\"textarea\"\n                :rows=\"4\"\n                placeholder=\"请输入关闭注册后的返回信息\"\n              >\n              </el-input>\n            </el-form-item>\n\n            <el-form-item label=\"服务状态\" prop=\"serviceStatus\">\n              <el-radio-group v-model=\"form.serviceStatus\" size=\"medium\">\n                <el-radio border :label=0 @change=\"serviceStatus = true\">收费</el-radio>\n                <el-radio border :label=1 @change=\"serviceStatus = true\">免费开放</el-radio>\n                <el-radio border :label=2 @change=\"serviceStatus = false\">关闭开放使用</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item v-if=\"serviceStatus == false\" label=\"关闭状态下的返回信息\" prop=\"serviceCloseMsg\">\n              <el-input\n                v-model=\"form.serviceCloseMsg\"\n                class=\"common-width\"\n                type=\"textarea\"\n                :rows=\"4\"\n                placeholder=\"请输入关闭状态下的返回信息\"\n              >\n              </el-input>\n            </el-form-item>\n\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"submitForm('form')\">{{ formButtonName }}</el-button>\n              <el-button @click=\"resetForm('form')\">重置</el-button>\n            </el-form-item>\n\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n\n</template>\n\n<script>\n  export default {\n    mounted() {\n\n      if (this.$route.params.id != null) {\n\n        this.$axios.get(\"soft/single\",{\n          params: {\n            softId: this.$route.params.id,\n          }\n        }).then((rsp) => {\n          this.form =rsp.data;\n          if (rsp.data.emailNotificatio == 1) {\n            this.emailNotificatio = false;\n          }\n          if (rsp.data.registerStatus == 1) {\n            this.registerStatus = false;\n          }\n          if (rsp.data.serviceStatus == 2) {\n            this.serviceStatus = false;\n          }\n        });\n\n        this.formButtonName = '立即保存';\n      }\n\n    },\n    methods: {\n      //上一页\n      openExpress() {\n        this.$router.push({\n          name: 'SoftList',\n        })\n      },\n      //表单操作\n      submitForm(formName) {\n        this.$refs[formName].validate((valid) => {\n          if (valid) {\n            if (this.$route.params.id != null) {\n              this.submit(true);\n            } else {\n              this.submit(false);\n            }\n          } else {\n            this.$message.error('提交错误');\n            return false;\n          }\n        });\n      },\n      submit(isUpdate) {\n\n        let data = this.form;\n\n        let url = \"soft/create\";\n        if (isUpdate == true) {\n          data.id = this.$route.params.id;\n          url = \"soft/update\";\n        }\n\n        this.$axios({\n          method: 'post',\n          url: url,\n          data:this.$qs.stringify(data),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      resetForm(formName) {\n        this.$refs[formName].resetFields();\n      },\n    },\n    data() {\n      return {\n        //收起放下\n        searchWorkspace: true,\n\n        formButtonName: '立即创建',\n\n        emailNotificatio: true,\n        registerStatus: true,\n        serviceStatus: true,\n\n        //表单配置\n        form: {\n          name: '',\n          notice: '',\n          changeStrategy: 0,\n          dosingStrategy: 0,\n          emailNotificatio: 0,\n          emailName: '',\n          registerStatus: 0,\n          registeCloseMsg: '',\n          serviceStatus: 1,\n          serviceCloseMsg: '',\n        },\n        forms: {\n          name: [\n            {required: true, message: '请填写软件名称', trigger: 'blur'},\n          ],\n          notice: [\n            {required: true, message: '请填写软件公告', trigger: 'blur'},\n            {min: 1, max: 255, message: '长度在 1 到 255 个字符', trigger: 'blur'}\n          ],\n          changeStrategy: [\n            {required: true, message: '请勾选换绑策略', trigger: 'blur'},\n          ],\n          dosingStrategy: [\n            {required: true, message: '请勾选多开策略', trigger: 'blur'},\n          ],\n          emailNotificatio: [\n            {required: true, message: '请勾选多开策略', trigger: 'blur'},\n          ],\n          emailName: [\n            { required: true, message: '请输入邮箱地址', trigger: 'blur' },\n            { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }\n          ],\n          registerStatus: [\n            {required: true, message: '请勾选注册状态', trigger: 'blur'},\n          ],\n          registeCloseMsg: [\n            {required: true, message: '请填写关闭注册后的返回信息', trigger: 'blur'},\n            {min: 1, max: 255, message: '长度在 1 到 255 个字符', trigger: 'blur'}\n          ],\n          serviceStatus: [\n            {required: true, message: '请勾选服务状态', trigger: 'blur'},\n          ],\n          serviceCloseMsg: [\n            {required: true, message: '请填写关闭状态下的返回信息', trigger: 'blur'},\n            {min: 1, max: 255, message: '长度在 1 到 255 个字符', trigger: 'blur'}\n          ],\n        },\n\n      }\n    }\n  }\n</script>\n\n<style>\n  .common-width {\n    width: 500px;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/src/views/soft/soft_leave_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件选择\">\n              <el-select v-model=\"seachForm.softId\" placeholder=\"请选择软件\">\n                <el-option v-for=\"item in softList\" :label=\"item.label\" :key=\"item.value\" :value=\"item.value\">\n                </el-option>\n              </el-select>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"创建时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"softName\"\n              label=\"软件名称\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"qq\"\n              label=\"联系QQ\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"content\"\n              label=\"用户留言内容\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"ip\"\n              label=\"IP地址\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"ipInfo\"\n              label=\"IP信息\"\n              align=\"center\"\n            />\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" style=\"color: red\" @click=\"removeRow(scope.row)\">删除</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\n  export default {\n    data() {\n      return {\n        // 控制两块区域是否显示\n        searchWorkspace: true,\n        workingArea: true,\n\n        softList: [],\n\n        // 搜索表单\n        seachForm: {\n          softId: \"\",\n        },\n\n        // 表格\n        tableTotal: 0,\n        tableData: [],\n        tablePageNum: 1,\n        tablePageSize: 10,\n        tablePageSizes: [10, 50, 100, 200]\n      }\n    },\n    mounted() {\n      this.$axios.get('soft/list').then((rsp) => {\n        this.softList.push({\n          label: \"全部\",\n          value: \"\",\n        });\n        for (let i = 0;i < rsp.data.length;i++) {\n          this.softList.push({\n            label: rsp.data[i].name,\n            value: rsp.data[i].id,\n          });\n        }\n      });\n      this.getTableData();\n    },\n    methods: {\n      getTableData() {\n\n        let data = this.seachForm\n        data.current = this.tablePageNum\n        data.size = this.tablePageSize\n\n        this.$axios.get('softLeaveMessage/page', {\n          params: data\n        }).then((rsp) => {\n          this.tableTotal = rsp.data.total\n          for (let i = 0; i < rsp.data.records.length; i++) {\n            rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate});\n          }\n          this.tableData = rsp.data.records\n        })\n      },\n      handleSizeChange(val) {\n        this.tablePageSize = val\n        this.getTableData()\n      },\n      handleCurrentChange(val) {\n        this.tablePageNum = val\n        this.getTableData()\n      },\n      search(isPrompt) {\n        if (isPrompt == true) {\n          this.$message.success('执行刷新数据成功...')\n        } else {\n          this.tablePageNum = 1;\n        }\n        this.getTableData()\n      },\n      updateRow(row) {\n        this.openForm({ id: row.id })\n      },\n      removeRow(row) {\n        this.$axios.post('softLeaveMessage/remove', this.$qs.stringify({\n          softLeaveMessageId: row.id\n        })).then((rsp) => {\n          this.getTableData();\n          this.$message(rsp.msg)\n        })\n      },\n    }\n  }\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/soft/soft_list.vue",
    "content": "<template>\n  <div id=\"app\">\n\n    <!--搜索操作区-->\n    <!-- gutter = 间距(控制每块col间距大小)-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"searchWorkspace == false\" shadow=\"always\">\n          <i class=\"el-icon-search\"/>\n          <span> 搜索</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"searchWorkspace == true\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-search\"/>\n            <span> 搜索</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :inline=\"true\" :model=\"seachForm\" class=\"demo-form-inline\" @submit.native.prevent>\n            <el-form-item label=\"软件名称\">\n              <el-input v-model=\"seachForm.name\" placeholder=\"软件名称\" @keyup.enter.native=\"search\"/>\n            </el-form-item>\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"search\">查询</el-button>\n            </el-form-item>\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n    <!--表格展示(操作)区-->\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\" style=\"margin-top: 10px\">\n\n        <el-card v-show=\"workingArea == false\" shadow=\"always\">\n          <i class=\"el-icon-edit\"/>\n          操作\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card v-show=\"workingArea\" class=\"box-card\" shadow=\"always\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-edit\"/>\n            <span> 操作</span>\n            <span style=\"color: #409EFF;cursor: pointer;margin-left: 20px\" @click=\"search(true)\">刷新数据</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"workingArea = !workingArea\">\n              收起\n            </el-button>\n          </div>\n\n          <!--按钮操作区-->\n          <el-button type=\"primary\" @click=\"openForm\"><i class=\"el-icon-plus\"/> 添加</el-button>\n\n          <!--表格展示区-->\n          <el-table\n            :data=\"tableData\"\n            border\n            style=\"width: 100%;margin-top: 10px\">\n            <el-table-column\n              prop=\"createDate\"\n              label=\"创建时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"updateDate\"\n              label=\"更新时间\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"name\"\n              label=\"软件名称\"\n              align=\"center\"\n            />\n            <el-table-column\n              prop=\"id\"\n              align=\"center\"\n              label=\"软件id\"\n            />\n            <el-table-column\n              prop=\"serviceStatus\"\n              align=\"center\"\n              label=\"状态\"\n            >\n              <template slot-scope=\"scope\">\n                <el-tag type=\"success\">{{scope.row.serviceStatus}}</el-tag>\n              </template>\n            </el-table-column>\n            <el-table-column\n              prop=\"accountTotal\"\n              align=\"center\"\n              label=\"用户数量\"\n            />\n            <el-table-column\n              prop=\"versionsNum\"\n              align=\"center\"\n              label=\"最新版本\"\n            />\n            <el-table-column\n              prop=\"leaveMessageNum\"\n              align=\"center\"\n              label=\"反馈留言数量\"\n            />\n            <el-table-column\n              fixed=\"right\"\n              align=\"center\"\n              label=\"操作\"\n              width=\"200\">\n\n              <template slot-scope=\"scope\">\n                <el-button type=\"text\" size=\"small\" @click=\"versionsUpdateRow(scope.row)\">版本设置</el-button>\n                <el-button type=\"text\" size=\"small\" @click=\"updateRow(scope.row)\">编辑</el-button>\n                <el-button type=\"text\" size=\"small\" style=\"color: red\" @click=\"removeRow(scope.row)\">删除</el-button>\n              </template>\n\n            </el-table-column>\n          </el-table>\n\n          <!--分页-->\n          <el-pagination\n            :page-sizes=\"tablePageSizes\"\n            :page-size=\"tablePageSize\"\n            :total=\"tableTotal\"\n            style=\"margin-top: 15px\"\n            background\n            layout=\"total, sizes, prev, pager, next, jumper\"\n            @size-change=\"handleSizeChange\"\n            @current-change=\"handleCurrentChange\"/>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n</template>\n\n<script>\n  var time = require('@/utils/time.js');\nexport default {\n  data() {\n    return {\n      // 控制两块区域是否显示\n      searchWorkspace: true,\n      workingArea: true,\n\n      // 搜索表单\n      seachForm: {\n        name: ''\n      },\n\n      // 表格\n      tableTotal: 0,\n      tableData: [],\n      tablePageNum: 1,\n      tablePageSize: 10,\n      tablePageSizes: [10, 50, 100, 200]\n    }\n  },\n  mounted() {\n    this.getTableData()\n  },\n  methods: {\n    openForm(params) {\n      params = params || {}\n      params.id = params.id || null\n      this.$router.push({\n        name: 'SoftForm',\n        params: params\n      })\n    },\n    getTableData() {\n\n      let data = this.seachForm\n      data.current = this.tablePageNum\n      data.size = this.tablePageSize\n\n      this.$axios.get('soft/page', {\n        params: data\n      }).then((rsp) => {\n        this.tableTotal = rsp.data.total\n        for (let i = 0; i < rsp.data.records.length; i++) {\n          rsp.data.records[i].createDate = time.timeStampDate({time:rsp.data.records[i].createDate})\n          rsp.data.records[i].updateDate = time.timeStampDate({time:rsp.data.records[i].updateDate})\n          if (rsp.data.records[i].serviceStatus == 0) {\n            rsp.data.records[i].serviceStatus = '收费'\n          } else if (rsp.data.records[i].serviceStatus == 1) {\n            rsp.data.records[i].serviceStatus = '免费'\n          } else if (rsp.data.records[i].serviceStatus == 2) {\n            rsp.data.records[i].serviceStatus = '关闭'\n          }\n        }\n        this.tableData = rsp.data.records\n      })\n    },\n    handleSizeChange(val) {\n      this.tablePageSize = val\n      this.getTableData()\n    },\n    handleCurrentChange(val) {\n      this.tablePageNum = val\n      this.getTableData()\n    },\n    search(isPrompt) {\n      if (isPrompt == true) {\n        this.$message.success('执行刷新数据成功...')\n      } else {\n        this.tablePageNum = 1;\n      }\n      this.getTableData()\n    },\n    updateRow(row) {\n      this.openForm({ id: row.id })\n    },\n    versionsUpdateRow(row) {\n      this.$router.push({\n        name: 'SoftVersionsForm',\n        params: {\n          versionsNum: row.versionsNum,\n          id: row.id\n        }\n      })\n    },\n    removeRow(row) {\n      this.$axios.post('soft/remove', this.$qs.stringify({\n        softId: row.id\n      })).then((rsp) => {\n        this.search()\n        this.$message(rsp.msg)\n      })\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "admin-web-page/src/views/soft/soft_versions_form.vue",
    "content": "<template>\n\n  <div id=\"app\">\n    <el-row :gutter=\"0\">\n\n      <el-col :span=\"24\">\n\n        <el-card shadow=\"always\" v-show=\"searchWorkspace == false\" style=\"text-align: center\">\n          <i class=\"el-icon-upload\"></i>\n          <span> 操作</span>\n          <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n          <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n            展示\n          </el-button>\n        </el-card>\n\n        <el-card class=\"box-card\" shadow=\"always\" v-show=\"searchWorkspace == true\">\n          <div slot=\"header\" class=\"clearfix\">\n            <i class=\"el-icon-upload\"></i>\n            <span> 操作</span>\n            <span @click=\"openExpress\" style=\"color: #409EFF;cursor: pointer;margin-left: 20px\"> 上一页</span>\n            <el-button style=\"float: right; padding: 3px 0\" type=\"text\" @click=\"searchWorkspace = !searchWorkspace\">\n              收起\n            </el-button>\n          </div>\n\n          <el-form :model=\"form\" :rules=\"forms\" :status-icon=\"true\"\n                   ref=\"form\" label-width=\"100px\" class=\"demo-ruleForm\">\n\n            <el-form-item label=\"版本号\" prop=\"number\">\n              <el-input v-model=\"form.number\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item label=\"更新公告(日志)\" prop=\"notice\">\n              <el-input\n                v-model=\"form.notice\"\n                class=\"common-width\"\n                type=\"textarea\"\n                :rows=\"15\"\n                placeholder=\"请输入更新公告\"\n              >\n              </el-input>\n            </el-form-item>\n\n            <el-form-item label=\"更新地址\" prop=\"updateUrl\">\n              <el-input v-model=\"form.updateUrl\" class=\"common-width\"></el-input>\n            </el-form-item>\n\n            <el-form-item label=\"是否强制更新\" prop=\"novatioNecessaria\">\n              <el-radio-group v-model=\"form.novatioNecessaria\" size=\"medium\">\n                <el-radio border :label=0 >不强制</el-radio>\n                <el-radio border :label=1 >强制</el-radio>\n              </el-radio-group>\n            </el-form-item>\n\n            <el-form-item>\n              <el-button type=\"primary\" @click=\"submitForm('form')\">{{ formButtonName }}</el-button>\n              <el-button @click=\"resetForm('form')\">重置</el-button>\n            </el-form-item>\n\n          </el-form>\n\n        </el-card>\n\n      </el-col>\n\n    </el-row>\n\n  </div>\n\n</template>\n\n<script>\n  export default {\n    mounted() {\n\n      if (this.$route.params.versionsNum != null) {\n        this.$axios.get(\"softVersions/getSingleBySoftId\",{\n          params: {\n            softId: this.$route.params.id,\n          }\n        }).then((rsp) => {\n          this.id = rsp.data.id;\n          this.form =rsp.data;\n        });\n\n        this.formButtonName = '立即保存';\n      }\n\n    },\n    methods: {\n      //上一页\n      openExpress() {\n        this.$router.push({\n          name: 'SoftList',\n        })\n      },\n      //表单操作\n      submitForm(formName) {\n        this.$refs[formName].validate((valid) => {\n          if (valid) {\n            if (this.$route.params.versionsNum != null) {\n              this.submit(true);\n            } else {\n              this.submit(false);\n            }\n          } else {\n            this.$message.error('提交错误');\n            return false;\n          }\n        });\n      },\n      submit(isUpdate) {\n\n        let data = this.form;\n\n        let url = \"softVersions/create\";\n        data.softId = this.$route.params.id;\n        if (isUpdate == true) {\n          data.id = this.id;\n          url = \"softVersions/update\";\n        }\n\n        this.$axios({\n          method: 'post',\n          url: url,\n          data:this.$qs.stringify(data),\n        }).then((rsp) => {\n          this.$message(rsp.msg);\n        });\n      },\n      resetForm(formName) {\n        this.$refs[formName].resetFields();\n      },\n    },\n    data() {\n      return {\n        //收起放下\n        searchWorkspace: true,\n\n        formButtonName: '立即创建',\n\n        id: 0,\n\n        //表单配置\n        form: {\n          number: '',\n          notice: '',\n          novatioNecessaria: 0,\n          updateUrl: '',\n        },\n        forms: {\n          number: [\n            {required: true, message: '请填写版本号', trigger: 'blur'},\n          ],\n        },\n\n      }\n    }\n  }\n</script>\n\n<style>\n  .common-width {\n    width: 500px;\n  }\n</style>\n"
  },
  {
    "path": "admin-web-page/static/.gitkeep",
    "content": ""
  },
  {
    "path": "api/.gitignore",
    "content": "/target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n.sts4-cache\n\n### IntelliJ IDEA ###\n.idea\n*.iws\n*.iml\n*.ipr\n\n### NetBeans ###\n/nbproject/private/\n/build/\n/nbbuild/\n/dist/\n/nbdist/\n/.nb-gradle/"
  },
  {
    "path": "api/.mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip\n"
  },
  {
    "path": "api/mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven2 Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\n  # TODO classpath?\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        wget \"$jarUrl\" -O \"$wrapperJarPath\"\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        curl -o \"$wrapperJarPath\" \"$jarUrl\"\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "api/mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    http://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven2 Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\nFOR /F \"tokens=1,2 delims==\" %%A IN (%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties) DO (\n\tIF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B \n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    echo Found %WRAPPER_JAR%\n) else (\n    echo Couldn't find %WRAPPER_JAR%, downloading it ...\n\techo Downloading from: %DOWNLOAD_URL%\n    powershell -Command \"(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"\n    echo Finished downloading %WRAPPER_JAR%\n)\n@REM End of extension\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "api/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.orange.verify</groupId>\n    <artifactId>api</artifactId>\n    <version>1.0.0</version>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n    </properties>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>com.baomidou</groupId>\n            <artifactId>mybatis-plus-boot-starter</artifactId>\n            <version>3.0.6</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <version>1.16.18</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.hibernate</groupId>\n            <artifactId>hibernate-validator</artifactId>\n            <version>5.4.1.Final</version>\n        </dependency>\n\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n            </plugin>\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/Account.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 软件用户表\r\n * t_account\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_account\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class Account implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 是否加入了黑名单 0.不是 1.是的\r\n     * blacklist\r\n     */\r\n    private Integer blacklist;\r\n\r\n    /**\r\n     * 卡密绑定id\r\n     * card_id\r\n     */\r\n    private String cardId;\r\n\r\n    /**\r\n     * 用户电脑的机器码\r\n     * code\r\n     */\r\n    private String code;\r\n\r\n    /**\r\n     * 用户注册的时候ip地址\r\n     * create_ip\r\n     */\r\n    private String createIp;\r\n\r\n    /**\r\n     * 创建时候的ip信息\r\n     * create_ip_info\r\n     */\r\n    private String createIpInfo;\r\n\r\n    /**\r\n     * 用户的真实姓名\r\n     * name\r\n     */\r\n    private String name;\r\n\r\n    /**\r\n     * 用户密码\r\n     * password\r\n     */\r\n    private String password;\r\n\r\n    /**\r\n     * 用户的联系手机号\r\n     * phone_number\r\n     */\r\n    private String phoneNumber;\r\n\r\n    /**\r\n     * 用户的联系QQ\r\n     * qq\r\n     */\r\n    private String qq;\r\n\r\n    /**\r\n     * 安全码，找回密码用\r\n     * security_code\r\n     */\r\n    private String securityCode;\r\n\r\n    /**\r\n     * 软件绑定id\r\n     * soft_id\r\n     */\r\n    private String softId;\r\n\r\n    /**\r\n     * 用户名\r\n     * username\r\n     */\r\n    private String username;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public Integer getBlacklist() {\r\n        return blacklist;\r\n    }\r\n\r\n    public void setBlacklist(Integer blacklist) {\r\n        this.blacklist = blacklist;\r\n    }\r\n\r\n    public String getCardId() {\r\n        return cardId;\r\n    }\r\n\r\n    public void setCardId(String cardId) {\r\n        this.cardId = cardId == null ? null : cardId.trim();\r\n    }\r\n\r\n    public String getCode() {\r\n        return code;\r\n    }\r\n\r\n    public void setCode(String code) {\r\n        this.code = code == null ? null : code.trim();\r\n    }\r\n\r\n    public String getCreateIp() {\r\n        return createIp;\r\n    }\r\n\r\n    public void setCreateIp(String createIp) {\r\n        this.createIp = createIp == null ? null : createIp.trim();\r\n    }\r\n\r\n    public String getCreateIpInfo() {\r\n        return createIpInfo;\r\n    }\r\n\r\n    public void setCreateIpInfo(String createIpInfo) {\r\n        this.createIpInfo = createIpInfo == null ? null : createIpInfo.trim();\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name == null ? null : name.trim();\r\n    }\r\n\r\n    public String getPassword() {\r\n        return password;\r\n    }\r\n\r\n    public void setPassword(String password) {\r\n        this.password = password == null ? null : password.trim();\r\n    }\r\n\r\n    public String getPhoneNumber() {\r\n        return phoneNumber;\r\n    }\r\n\r\n    public void setPhoneNumber(String phoneNumber) {\r\n        this.phoneNumber = phoneNumber == null ? null : phoneNumber.trim();\r\n    }\r\n\r\n    public String getQq() {\r\n        return qq;\r\n    }\r\n\r\n    public void setQq(String qq) {\r\n        this.qq = qq == null ? null : qq.trim();\r\n    }\r\n\r\n    public String getSecurityCode() {\r\n        return securityCode;\r\n    }\r\n\r\n    public void setSecurityCode(String securityCode) {\r\n        this.securityCode = securityCode == null ? null : securityCode.trim();\r\n    }\r\n\r\n    public String getSoftId() {\r\n        return softId;\r\n    }\r\n\r\n    public void setSoftId(String softId) {\r\n        this.softId = softId == null ? null : softId.trim();\r\n    }\r\n\r\n    public String getUsername() {\r\n        return username;\r\n    }\r\n\r\n    public void setUsername(String username) {\r\n        this.username = username == null ? null : username.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/AccountLoginLog.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 用户登录日志\r\n * t_account_login_log\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_account_login_log\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class AccountLoginLog implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * account_id\r\n     */\r\n    private String accountId;\r\n\r\n    /**\r\n     * ip\r\n     */\r\n    private String ip;\r\n\r\n    /**\r\n     * ip_info\r\n     */\r\n    private String ipInfo;\r\n\r\n    /**\r\n     * soft_id\r\n     */\r\n    private String softId;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getAccountId() {\r\n        return accountId;\r\n    }\r\n\r\n    public void setAccountId(String accountId) {\r\n        this.accountId = accountId == null ? null : accountId.trim();\r\n    }\r\n\r\n    public String getIp() {\r\n        return ip;\r\n    }\r\n\r\n    public void setIp(String ip) {\r\n        this.ip = ip == null ? null : ip.trim();\r\n    }\r\n\r\n    public String getIpInfo() {\r\n        return ipInfo;\r\n    }\r\n\r\n    public void setIpInfo(String ipInfo) {\r\n        this.ipInfo = ipInfo == null ? null : ipInfo.trim();\r\n    }\r\n\r\n    public String getSoftId() {\r\n        return softId;\r\n    }\r\n\r\n    public void setSoftId(String softId) {\r\n        this.softId = softId == null ? null : softId.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/AccountRegisterLog.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 用户注册日志\r\n * t_account_register_log\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_account_register_log\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class AccountRegisterLog implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * account_id\r\n     */\r\n    private String accountId;\r\n\r\n    /**\r\n     * ip\r\n     */\r\n    private String ip;\r\n\r\n    /**\r\n     * ip_info\r\n     */\r\n    private String ipInfo;\r\n\r\n    /**\r\n     * soft_id\r\n     */\r\n    private String softId;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getAccountId() {\r\n        return accountId;\r\n    }\r\n\r\n    public void setAccountId(String accountId) {\r\n        this.accountId = accountId == null ? null : accountId.trim();\r\n    }\r\n\r\n    public String getIp() {\r\n        return ip;\r\n    }\r\n\r\n    public void setIp(String ip) {\r\n        this.ip = ip == null ? null : ip.trim();\r\n    }\r\n\r\n    public String getIpInfo() {\r\n        return ipInfo;\r\n    }\r\n\r\n    public void setIpInfo(String ipInfo) {\r\n        this.ipInfo = ipInfo == null ? null : ipInfo.trim();\r\n    }\r\n\r\n    public String getSoftId() {\r\n        return softId;\r\n    }\r\n\r\n    public void setSoftId(String softId) {\r\n        this.softId = softId == null ? null : softId.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/BaiduMapApi.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 百度地理api配置\r\n * t_baidu_map_api\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_baidu_map_api\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class BaiduMapApi implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * appkey\r\n     * appkey\r\n     */\r\n    private String appkey;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getAppkey() {\r\n        return appkey;\r\n    }\r\n\r\n    public void setAppkey(String appkey) {\r\n        this.appkey = appkey == null ? null : appkey.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/Card.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 软件充值卡\r\n * t_card\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_card\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class Card implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 用户绑定id\r\n     * account_id\r\n     */\r\n    private String accountId;\r\n\r\n    /**\r\n     * 充值卡号\r\n     * card_number\r\n     */\r\n    private String cardNumber;\r\n\r\n    /**\r\n     * 卡类绑定id\r\n     * card_type_id\r\n     */\r\n    private String cardTypeId;\r\n\r\n    /**\r\n     * 是否封停使用 0.未封停 1.已封停\r\n     * closure\r\n     */\r\n    private Integer closure;\r\n\r\n    /**\r\n     * 结束时间\r\n     * end_date\r\n     */\r\n    private Long endDate;\r\n\r\n    /**\r\n     * 销售状态 0.未卖出 1.已卖出\r\n     * sell_status\r\n     */\r\n    private Integer sellStatus;\r\n\r\n    /**\r\n     * 开始使用时间\r\n     * start_date\r\n     */\r\n    private Long startDate;\r\n\r\n    /**\r\n     * 使用状态 0.未使用 1.已使用\r\n     * use_status\r\n     */\r\n    private Integer useStatus;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getAccountId() {\r\n        return accountId;\r\n    }\r\n\r\n    public void setAccountId(String accountId) {\r\n        this.accountId = accountId == null ? null : accountId.trim();\r\n    }\r\n\r\n    public String getCardNumber() {\r\n        return cardNumber;\r\n    }\r\n\r\n    public void setCardNumber(String cardNumber) {\r\n        this.cardNumber = cardNumber == null ? null : cardNumber.trim();\r\n    }\r\n\r\n    public String getCardTypeId() {\r\n        return cardTypeId;\r\n    }\r\n\r\n    public void setCardTypeId(String cardTypeId) {\r\n        this.cardTypeId = cardTypeId == null ? null : cardTypeId.trim();\r\n    }\r\n\r\n    public Integer getClosure() {\r\n        return closure;\r\n    }\r\n\r\n    public void setClosure(Integer closure) {\r\n        this.closure = closure;\r\n    }\r\n\r\n    public Long getEndDate() {\r\n        return endDate;\r\n    }\r\n\r\n    public void setEndDate(Long endDate) {\r\n        this.endDate = endDate;\r\n    }\r\n\r\n    public Integer getSellStatus() {\r\n        return sellStatus;\r\n    }\r\n\r\n    public void setSellStatus(Integer sellStatus) {\r\n        this.sellStatus = sellStatus;\r\n    }\r\n\r\n    public Long getStartDate() {\r\n        return startDate;\r\n    }\r\n\r\n    public void setStartDate(Long startDate) {\r\n        this.startDate = startDate;\r\n    }\r\n\r\n    public Integer getUseStatus() {\r\n        return useStatus;\r\n    }\r\n\r\n    public void setUseStatus(Integer useStatus) {\r\n        this.useStatus = useStatus;\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/CardType.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 软件充值卡类型\r\n * t_card_type\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_card_type\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class CardType implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 软件绑定id\r\n     * soft_id\r\n     */\r\n    private String softId;\r\n\r\n    /**\r\n     * 卡类单位 0.分 1.时 2.天 3.周 4.月 5.年\r\n     * unit\r\n     */\r\n    private Integer unit;\r\n\r\n    /**\r\n     * 卡类值 比如对应的是分填1就是1分钟 以此类推\r\n     * value\r\n     */\r\n    private Integer value;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getSoftId() {\r\n        return softId;\r\n    }\r\n\r\n    public void setSoftId(String softId) {\r\n        this.softId = softId == null ? null : softId.trim();\r\n    }\r\n\r\n    public Integer getUnit() {\r\n        return unit;\r\n    }\r\n\r\n    public void setUnit(Integer unit) {\r\n        this.unit = unit;\r\n    }\r\n\r\n    public Integer getValue() {\r\n        return value;\r\n    }\r\n\r\n    public void setValue(Integer value) {\r\n        this.value = value;\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/EmailAccount.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 邮箱账户\r\n * t_email_account\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_email_account\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class EmailAccount implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 是否使用 0.使用 1.不使用\r\n     * is_use\r\n     */\r\n    private Integer isUse;\r\n\r\n    /**\r\n     * 用户密码\r\n     * password\r\n     */\r\n    private String password;\r\n\r\n    /**\r\n     * 被使用的次数\r\n     * total\r\n     */\r\n    private Long total;\r\n\r\n    /**\r\n     * 用户名\r\n     * username\r\n     */\r\n    private String username;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public Integer getIsUse() {\r\n        return isUse;\r\n    }\r\n\r\n    public void setIsUse(Integer isUse) {\r\n        this.isUse = isUse;\r\n    }\r\n\r\n    public String getPassword() {\r\n        return password;\r\n    }\r\n\r\n    public void setPassword(String password) {\r\n        this.password = password == null ? null : password.trim();\r\n    }\r\n\r\n    public Long getTotal() {\r\n        return total;\r\n    }\r\n\r\n    public void setTotal(Long total) {\r\n        this.total = total;\r\n    }\r\n\r\n    public String getUsername() {\r\n        return username;\r\n    }\r\n\r\n    public void setUsername(String username) {\r\n        this.username = username == null ? null : username.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/InterfaceManagement.java",
    "content": "package com.orange.verify.api.bean;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * 接口默认控制配置\n * visit 1=可以访问 0=接口关闭\n * ipHandle 1开启ip限流控制 0关闭\n * ipVisits ip访问次数，限制接口在 xx 分钟内容只能访问 xx 次，默认60次\n * ipRedisInterval ip redis缓存多少分钟 默认1分钟\n */\n@Data\npublic class InterfaceManagement implements Serializable {\n\n    private String key;\n\n    private String remarks;\n\n    private Integer visit;\n\n    private Integer ipHandle;\n\n    private Long ipVisits;\n\n    private Long ipRedisInterval;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/Soft.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 软件\r\n * t_soft\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_soft\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class Soft implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 换绑策略 0.支持换绑定 1.不支持换绑定\r\n     * change_strategy\r\n     */\r\n    private Integer changeStrategy;\r\n\r\n    /**\r\n     * 多开策略 0.只支持单机 1.无限制\r\n     * dosing_strategy\r\n     */\r\n    private Integer dosingStrategy;\r\n\r\n    /**\r\n     * 被通知的邮箱账户名\r\n     * email_name\r\n     */\r\n    private String emailName;\r\n\r\n    /**\r\n     * 软件被留言 是否邮件通知 0.通知 1.不通知\r\n     * email_notificatio\r\n     */\r\n    private Integer emailNotificatio;\r\n\r\n    /**\r\n     * 软件名称\r\n     * name\r\n     */\r\n    private String name;\r\n\r\n    /**\r\n     * 公告\r\n     * notice\r\n     */\r\n    private String notice;\r\n\r\n    /**\r\n     * 关闭注册后的返回信息\r\n     * registe_close_msg\r\n     */\r\n    private String registeCloseMsg;\r\n\r\n    /**\r\n     * 注册状态 0.开放注册 1.关闭注册\r\n     * register_status\r\n     */\r\n    private Integer registerStatus;\r\n\r\n    /**\r\n     * 关闭状态下的返回信息\r\n     * service_close_msg\r\n     */\r\n    private String serviceCloseMsg;\r\n\r\n    /**\r\n     * 服务状态 0.收费 1.免费开放 2.关闭开放使用\r\n     * service_status\r\n     */\r\n    private Integer serviceStatus;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public Integer getChangeStrategy() {\r\n        return changeStrategy;\r\n    }\r\n\r\n    public void setChangeStrategy(Integer changeStrategy) {\r\n        this.changeStrategy = changeStrategy;\r\n    }\r\n\r\n    public Integer getDosingStrategy() {\r\n        return dosingStrategy;\r\n    }\r\n\r\n    public void setDosingStrategy(Integer dosingStrategy) {\r\n        this.dosingStrategy = dosingStrategy;\r\n    }\r\n\r\n    public String getEmailName() {\r\n        return emailName;\r\n    }\r\n\r\n    public void setEmailName(String emailName) {\r\n        this.emailName = emailName == null ? null : emailName.trim();\r\n    }\r\n\r\n    public Integer getEmailNotificatio() {\r\n        return emailNotificatio;\r\n    }\r\n\r\n    public void setEmailNotificatio(Integer emailNotificatio) {\r\n        this.emailNotificatio = emailNotificatio;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name == null ? null : name.trim();\r\n    }\r\n\r\n    public String getNotice() {\r\n        return notice;\r\n    }\r\n\r\n    public void setNotice(String notice) {\r\n        this.notice = notice == null ? null : notice.trim();\r\n    }\r\n\r\n    public String getRegisteCloseMsg() {\r\n        return registeCloseMsg;\r\n    }\r\n\r\n    public void setRegisteCloseMsg(String registeCloseMsg) {\r\n        this.registeCloseMsg = registeCloseMsg == null ? null : registeCloseMsg.trim();\r\n    }\r\n\r\n    public Integer getRegisterStatus() {\r\n        return registerStatus;\r\n    }\r\n\r\n    public void setRegisterStatus(Integer registerStatus) {\r\n        this.registerStatus = registerStatus;\r\n    }\r\n\r\n    public String getServiceCloseMsg() {\r\n        return serviceCloseMsg;\r\n    }\r\n\r\n    public void setServiceCloseMsg(String serviceCloseMsg) {\r\n        this.serviceCloseMsg = serviceCloseMsg == null ? null : serviceCloseMsg.trim();\r\n    }\r\n\r\n    public Integer getServiceStatus() {\r\n        return serviceStatus;\r\n    }\r\n\r\n    public void setServiceStatus(Integer serviceStatus) {\r\n        this.serviceStatus = serviceStatus;\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/SoftLeaveMessage.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 软件留言\r\n * t_soft_leave_message\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_soft_leave_message\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class SoftLeaveMessage implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 用户留言内容\r\n     * content\r\n     */\r\n    private String content;\r\n\r\n    /**\r\n     * ip\r\n     */\r\n    private String ip;\r\n\r\n    /**\r\n     * ip_info\r\n     */\r\n    private String ipInfo;\r\n\r\n    /**\r\n     * 用户的QQ号\r\n     * qq\r\n     */\r\n    private String qq;\r\n\r\n    /**\r\n     * 软件绑定id\r\n     * soft_id\r\n     */\r\n    private String softId;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getContent() {\r\n        return content;\r\n    }\r\n\r\n    public void setContent(String content) {\r\n        this.content = content == null ? null : content.trim();\r\n    }\r\n\r\n    public String getIp() {\r\n        return ip;\r\n    }\r\n\r\n    public void setIp(String ip) {\r\n        this.ip = ip == null ? null : ip.trim();\r\n    }\r\n\r\n    public String getIpInfo() {\r\n        return ipInfo;\r\n    }\r\n\r\n    public void setIpInfo(String ipInfo) {\r\n        this.ipInfo = ipInfo == null ? null : ipInfo.trim();\r\n    }\r\n\r\n    public String getQq() {\r\n        return qq;\r\n    }\r\n\r\n    public void setQq(String qq) {\r\n        this.qq = qq == null ? null : qq.trim();\r\n    }\r\n\r\n    public String getSoftId() {\r\n        return softId;\r\n    }\r\n\r\n    public void setSoftId(String softId) {\r\n        this.softId = softId == null ? null : softId.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/SoftVersions.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 软件版本控制\r\n * t_soft_versions\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_soft_versions\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class SoftVersions implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 更新公告\r\n     * notice\r\n     */\r\n    private String notice;\r\n\r\n    /**\r\n     * 是否强制更新 0.不强制 1.强制\r\n     * novatio_necessaria\r\n     */\r\n    private Integer novatioNecessaria;\r\n\r\n    /**\r\n     * 版本号\r\n     * number\r\n     */\r\n    private String number;\r\n\r\n    /**\r\n     * 软件绑定id\r\n     * soft_id\r\n     */\r\n    private String softId;\r\n\r\n    /**\r\n     * 更新url\r\n     * update_url\r\n     */\r\n    private String updateUrl;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getNotice() {\r\n        return notice;\r\n    }\r\n\r\n    public void setNotice(String notice) {\r\n        this.notice = notice == null ? null : notice.trim();\r\n    }\r\n\r\n    public Integer getNovatioNecessaria() {\r\n        return novatioNecessaria;\r\n    }\r\n\r\n    public void setNovatioNecessaria(Integer novatioNecessaria) {\r\n        this.novatioNecessaria = novatioNecessaria;\r\n    }\r\n\r\n    public String getNumber() {\r\n        return number;\r\n    }\r\n\r\n    public void setNumber(String number) {\r\n        this.number = number == null ? null : number.trim();\r\n    }\r\n\r\n    public String getSoftId() {\r\n        return softId;\r\n    }\r\n\r\n    public void setSoftId(String softId) {\r\n        this.softId = softId == null ? null : softId.trim();\r\n    }\r\n\r\n    public String getUpdateUrl() {\r\n        return updateUrl;\r\n    }\r\n\r\n    public void setUpdateUrl(String updateUrl) {\r\n        this.updateUrl = updateUrl == null ? null : updateUrl.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/bean/User.java",
    "content": "package com.orange.verify.api.bean;\r\n\r\nimport com.baomidou.mybatisplus.annotation.*;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 平台管理用户\r\n * t_user\r\n * @author Orange\r\n * @date 2019/05/01\r\n */\r\n@TableName(\"t_user\")\r\n@KeySequence(\"SEQ_TEST\")\r\npublic class User implements Serializable {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @TableId(value = \"id\", type = IdType.ID_WORKER_STR)\r\n    private String id;\r\n\r\n    @TableField(value = \"create_date\",fill = FieldFill.INSERT)\r\n    private Long createDate;\r\n\r\n    @TableLogic\r\n    private Integer delFlag;\r\n\r\n    /**\r\n     * 备注\r\n     * remarks\r\n     */\r\n    private String remarks;\r\n\r\n    @TableField(value = \"update_date\",fill = FieldFill.UPDATE)\r\n    private Long updateDate;\r\n\r\n    /**\r\n     * 管理标识符\r\n     * flag\r\n     */\r\n    private String flag;\r\n\r\n    /**\r\n     * 管理用户密码\r\n     * password\r\n     */\r\n    private String password;\r\n\r\n    /**\r\n     * 管理用户名\r\n     * username\r\n     */\r\n    private String username;\r\n\r\n    public String getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(String id) {\r\n        this.id = id == null ? null : id.trim();\r\n    }\r\n\r\n    public Long getCreateDate() {\r\n        return createDate;\r\n    }\r\n\r\n    public void setCreateDate(Long createDate) {\r\n        this.createDate = createDate;\r\n    }\r\n\r\n    public Integer getDelFlag() {\r\n        return delFlag;\r\n    }\r\n\r\n    public void setDelFlag(Integer delFlag) {\r\n        this.delFlag = delFlag;\r\n    }\r\n\r\n    public String getRemarks() {\r\n        return remarks;\r\n    }\r\n\r\n    public void setRemarks(String remarks) {\r\n        this.remarks = remarks == null ? null : remarks.trim();\r\n    }\r\n\r\n    public Long getUpdateDate() {\r\n        return updateDate;\r\n    }\r\n\r\n    public void setUpdateDate(Long updateDate) {\r\n        this.updateDate = updateDate;\r\n    }\r\n\r\n    public String getFlag() {\r\n        return flag;\r\n    }\r\n\r\n    public void setFlag(String flag) {\r\n        this.flag = flag == null ? null : flag.trim();\r\n    }\r\n\r\n    public String getPassword() {\r\n        return password;\r\n    }\r\n\r\n    public void setPassword(String password) {\r\n        this.password = password == null ? null : password.trim();\r\n    }\r\n\r\n    public String getUsername() {\r\n        return username;\r\n    }\r\n\r\n    public void setUsername(String username) {\r\n        this.username = username == null ? null : username.trim();\r\n    }\r\n}"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/redis/RedisKeyConstant.java",
    "content": "package com.orange.verify.api.redis;\r\n\r\n/**\r\n * reis key 常量池\r\n * @author Orange软件\r\n * @date 2019.3.12\r\n */\r\npublic class RedisKeyConstant {\r\n\r\n    /**\r\n     * admin web 开放接口管理key\r\n     */\r\n    public final static String OPEN_INTERFACE = \"orange.tbk:open.interface:\";\r\n\r\n    /**\r\n     * admin web 访问人IP录入key\r\n     */\r\n    public final static String IP_LIBRARY = \"orange.tbk:ip-library:\";\r\n\r\n}\r\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/AccountBlackList.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Account\n * 是否加入了黑名单 0.不是 1.是的\n */\npublic enum AccountBlackList {\n\n    YES(1,\"是\"),\n    NO(0,\"不是\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    AccountBlackList(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/CardClosure.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Card\n * 是否封停使用 0.未封停 1.已封停\n */\npublic enum CardClosure {\n\n    YES(1,\"已封停\"),\n    NO(0,\"未封停\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    CardClosure(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/CardSellStatus.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Card\n * 销售状态 0.未卖出 1.已卖出\n */\npublic enum CardSellStatus {\n\n    YES(1,\"已卖出\"),\n    NO(0,\"未卖出\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    CardSellStatus(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/CardTypeUnit.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * CardType\n * 卡类单位 0.分 1.时 2.天 3.周 4.月 5.年\n */\npublic enum CardTypeUnit {\n\n    MINUTE(0,\"分\"),\n    HOUR(1,\"时\"),\n    DAY(2,\"天\"),\n    WEEK(3,\"周\"),\n    MONTH(4,\"月\"),\n    YEAR(5,\"年\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    CardTypeUnit(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/CardUseStatus.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Card\n * 使用状态 0.未使用 1.已使用\n */\npublic enum CardUseStatus {\n\n    YES(1,\"已使用\"),\n    NO(0,\"未使用\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    CardUseStatus(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/EmailAccountIsUse.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * EmailAccount\n * 是否使用 0.使用中 1.未使用\n */\npublic enum  EmailAccountIsUse {\n\n    YES(0,\"使用中\"),\n    NO(1,\"未使用\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    EmailAccountIsUse(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/InterfaceManagementIpHandle.java",
    "content": "package com.orange.verify.api.sc;\n\nimport java.io.Serializable;\n\n/**\n * InterfaceManagement\n * ipHandle 1开启ip限流控制 0关闭\n */\npublic enum InterfaceManagementIpHandle implements Serializable {\n\n    CLOSE(0,\"关闭\"),\n    START(1,\"开启\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    InterfaceManagementIpHandle(int statusCode, String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/InterfaceManagementVisit.java",
    "content": "package com.orange.verify.api.sc;\n\nimport java.io.Serializable;\n\n/**\n * InterfaceManagement\n * visit 1=可以访问 0=接口关闭\n */\npublic enum InterfaceManagementVisit implements Serializable {\n\n    CLOSE(0,\"拒绝访问\"),\n    OPEN(1,\"可以访问\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    InterfaceManagementVisit(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/SoftChangeStrategy.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Soft\n * 换绑策略 0.支持换绑定 1.不支持换绑定\n */\npublic enum SoftChangeStrategy {\n\n    YES(0,\"支持换绑定\"),\n    NO(1,\"不支持换绑定\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    SoftChangeStrategy(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/SoftDosingStrategy.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Soft\n * 多开策略 0.只支持单机 1.无限制\n */\npublic enum SoftDosingStrategy {\n\n    SINGLE(0,\"只支持单机\"),\n    UNLIMITED(1,\"无限制\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    SoftDosingStrategy(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/SoftEmailNotificatio.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Soft\n * 软件被留言 是否邮件通知 0.通知 1.不通知\n */\npublic enum SoftEmailNotificatio {\n\n    YES(0,\"通知\"),\n    NO(1,\"不通知\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    SoftEmailNotificatio(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/SoftRegisterStatus.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Soft\n * 注册状态 0.开放注册 1.关闭注册\n */\npublic enum SoftRegisterStatus {\n\n    OPEN(0,\"开放注册\"),\n    CLOSE(1,\"关闭注册\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    SoftRegisterStatus(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/SoftServiceStatus.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * Soft\n * 服务状态 0.收费 1.免费开放 2.关闭开放使用\n */\npublic enum SoftServiceStatus {\n\n    CHARGE(0,\"收费\"),\n    FREE(1,\"免费开放\"),\n    CLOSE(2,\"关闭开放使用\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    SoftServiceStatus(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sc/SoftVersionsNovatioNecessaria.java",
    "content": "package com.orange.verify.api.sc;\n\n/**\n * SoftVersions\n * 是否强制更新 0.不强制 1.强制\n */\npublic enum SoftVersionsNovatioNecessaria {\n\n    YES(1,\"强制\"),\n    NO(0,\"不强制\")\n    ;\n\n    private int statusCode;\n\n    private String content;\n\n    SoftVersionsNovatioNecessaria(int statusCode,String content) {\n        this.statusCode = statusCode;\n        this.content = content;\n    }\n\n    public int getStatusCode() {\n        return statusCode;\n    }\n\n    public String getContent() {\n        return content;\n    }\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/AccountLoginLogService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.AccountLoginLog;\nimport com.orange.verify.api.vo.AccountLoginLogVo;\n\nimport java.util.List;\n\npublic interface AccountLoginLogService extends IService<AccountLoginLog> {\n\n    List<String> getBeforeData(String softId);\n\n    Page<AccountLoginLogVo> page(AccountLoginLogVo accountLoginLog, Page page);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/AccountRegisterLogService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.AccountRegisterLog;\nimport com.orange.verify.api.vo.AccountRegisterLogVo;\n\nimport java.util.List;\n\npublic interface AccountRegisterLogService extends IService<AccountRegisterLog> {\n\n    List<String> getBeforeData(String softId);\n\n    Page<AccountRegisterLogVo> page(AccountRegisterLog accountRegisterLog, Page page);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/AccountService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.Account;\nimport com.orange.verify.api.sr.ServiceResult;\nimport com.orange.verify.api.vo.AccountVo;\nimport com.orange.verify.api.vo.open.*;\n\npublic interface AccountService extends IService<Account> {\n\n    Page<AccountVo> page(AccountVo accountVo, Page page);\n\n    ServiceResult<String> getPublicKey();\n\n    void saveVerificationCode(AccountVerificationCodeVo accountVerificationCodeVo);\n\n    ServiceResult register(AccountRegisterVo accountRegisterVo);\n\n    ServiceResult login(AccountLoginVo accountLoginVo);\n\n    ServiceResult bindingCard(AccountBindingCardVo accountBindingCardVo);\n\n    ServiceResult bindingCode(AccountBindingCodeVo accountBindingCodeVo);\n\n    ServiceResult updatePassword(AccountUpdatePasswordVo accountUpdatePasswordVo);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/BaiduMapApiService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.BaiduMapApi;\n\npublic interface BaiduMapApiService extends IService<BaiduMapApi> {\n\n    boolean create(BaiduMapApi baiduMapApi);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/CardService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.Card;\nimport com.orange.verify.api.vo.CardVo;\nimport com.orange.verify.api.vo.open.CardTimeLimitVo;\n\nimport java.util.List;\n\npublic interface CardService extends IService<Card> {\n\n    Page<CardVo> page(CardVo cardVo, Page page);\n\n    void saveLogic(Card card,Integer count);\n\n    CardTimeLimitVo getCardTimeLimit(String username,String password,String softId);\n\n    void sell(List<String> sell);\n\n    void batchRemove(List<String> cardList);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/CardTypeService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.CardType;\nimport com.orange.verify.api.vo.CardTypeVo;\n\npublic interface CardTypeService extends IService<CardType> {\n\n    Page<CardTypeVo> page(CardType cardType, Page page);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/EmailAccountService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.EmailAccount;\n\nimport java.util.List;\n\npublic interface EmailAccountService extends IService<EmailAccount> {\n\n    List<EmailAccount> getList();\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/InterfaceManagementService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.orange.verify.api.bean.InterfaceManagement;\n\nimport java.util.List;\n\npublic interface InterfaceManagementService {\n\n    List<InterfaceManagement> getAll() throws Exception;\n\n    void closeInterface(String key,Integer on) throws Exception;\n\n    InterfaceManagement getSingle(String key) throws Exception;\n\n    void update(InterfaceManagement interfaceManagement) throws Exception;\n\n    void ipHandle(String key,Integer on) throws Exception;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/SoftLeaveMessageService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.SoftLeaveMessage;\nimport com.orange.verify.api.sr.ServiceResult;\nimport com.orange.verify.api.vo.SoftLeaveMessageVo;\nimport com.orange.verify.api.vo.open.SoftLeaveMeesageSubmitVo;\n\npublic interface SoftLeaveMessageService extends IService<SoftLeaveMessage> {\n\n    Page<SoftLeaveMessageVo> page(SoftLeaveMessageVo softLeaveMessageVo, Page page);\n\n    ServiceResult create(SoftLeaveMeesageSubmitVo softLeaveMeesageSubmitVo);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/SoftService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.Soft;\nimport com.orange.verify.api.sr.ServiceResult;\nimport com.orange.verify.api.vo.SoftVo;\nimport com.orange.verify.api.vo.open.SoftGetSoftDescVo;\n\npublic interface SoftService extends IService<Soft> {\n\n    Page<SoftVo> page(Soft soft,Page page);\n\n    ServiceResult<SoftGetSoftDescVo> getSoftDesc(SoftGetSoftDescVo accountGetSoftDescVo);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/SoftVersionsService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.SoftVersions;\nimport com.orange.verify.api.vo.SoftVersionsVo;\n\npublic interface SoftVersionsService extends IService<SoftVersions> {\n\n    SoftVersionsVo getSingleBySoftId(String softId);\n\n    boolean saveLogic(SoftVersions softVersions);\n\n    com.orange.verify.api.vo.open.SoftVersionsVo getVersions(String softId);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/service/UserService.java",
    "content": "package com.orange.verify.api.service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.orange.verify.api.bean.User;\n\npublic interface UserService extends IService<User> {\n\n    int verifyUser(String username,String password);\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/AccountImplBindingCardEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class AccountImplBindingCardEnum implements Serializable {\n\n    public static final int BINDING_CARD_SUCCESS = 1;\n\n    public static final int KEY_EMPTY = 2;\n\n    public static final int SOFT_EMPTY = 3;\n\n    public static final int KEY_ERROR = 4;\n\n    public static final int PASSWORD_LENGTH_ERROR = 5;\n\n    public static final int SOFT_CLOSE = 6;\n\n    public static final int ACCOUNT_EMPTY = 7;\n\n    public static final int CARD_EMPTY = 8;\n\n    public static final int ACCOUNT_BLACKLIST = 9;\n\n    public static final int CARD_USE = 10;\n\n    public static final int CARD_CLOSURE = 11;\n\n    public static final int SOFT_INCONSISTENCY = 12;\n\n    public static final int BINDING_CARD_ERROR = 13;\n\n    public static final int PASSWORD_ERROR = 14;\n\n    public static final int SOFT_FREE = 15;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/AccountImplBindingCodeEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class AccountImplBindingCodeEnum implements Serializable {\n\n    public static final int BINDING_CODE_SUCCESS = 1;\n\n    public static final int KEY_EMPTY = 2;\n\n    public static final int SOFT_EMPTY = 3;\n\n    public static final int KEY_ERROR = 4;\n\n    public static final int PASSWORD_LENGTH_ERROR = 5;\n\n    public static final int SOFT_CLOSE = 6;\n\n    public static final int ACCOUNT_EMPTY = 7;\n\n    public static final int SOFT_NO_CHANGE = 8;\n\n    public static final int ACCOUNT_BLACKLIST = 9;\n\n    public static final int PASSWORD_ERROR = 10;\n\n    public static final int BINDING_CODE_ERROR = 11;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/AccountImplGetPublicKeyEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class AccountImplGetPublicKeyEnum implements Serializable {\n\n    public static final int SUCCESS = 1;\n\n    public static final int KEY_ERROR = 2;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/AccountImplLoginEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class AccountImplLoginEnum implements Serializable {\n\n    public static final int LOGIN_SUCCESS = 1;\n\n    public static final int LOGIN_ERROR = 2;\n\n    public static final int KEY_EMPTY = 3;\n\n    public static final int SOFT_EMPTY = 4;\n\n    public static final int SOFT_CLOSE = 5;\n\n    public static final int KEY_ERROR = 6;\n\n    public static final int PASSWORD_LENGTH_ERROR = 7;\n\n    public static final int ACCOUNT_NOT_BOUND_CARD = 8;\n\n    public static final int CARD_CLOSURE = 9;\n\n    public static final int CARD_PAST_DUE = 10;\n\n    public static final int ACCOUNT_BLACKLIST = 11;\n\n    public static final int ACCOUNT_EMPTY = 12;\n\n    public static final int BAIDU_API_ERROR = 13;\n\n    public static final int PASSWORD_ERROR = 14;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/AccountImplRegisterEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class AccountImplRegisterEnum implements Serializable {\n\n    public static final int KEY_EMPTY = 1;\n\n    public static final int SOFT_EMPTY = 2;\n\n    public static final int BAIDU_API_ERROR = 3;\n\n    public static final int KEY_ERROR = 4;\n\n    public static final int ACCOUNT_ALREADY_EXIST = 5;\n\n    public static final int PASSWORD_LENGTH_ERROR = 6;\n\n    public static final int SOFT_CLOSE = 7;\n\n    public static final int REGISTER_CLOSE = 8;\n\n    public static final int REGISTER_SUCCESS = 9;\n\n    public static final int REGISTER_ERROR = 10;\n\n    public static final int VC_EMPTY = 11;\n\n    public static final int VC_MISMATCHES = 12;\n\n    public static final int NIMIETY = 13;\n\n    public static final int SERVER_ERROR = 14;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/AccountImplUpdatePasswordEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class AccountImplUpdatePasswordEnum implements Serializable {\n\n    public static final int UPDATE_PASSWORD_SUCCESS = 1;\n\n    public static final int UPDATE_PASSWORD_ERROR = 2;\n\n    public static final int SOFT_EMPTY = 3;\n\n    public static final int SOFT_CLOSE = 4;\n\n    public static final int ACCOUNT_EMPTY = 5;\n\n    public static final int ACCOUNT_BLACKLIST = 6;\n\n    public static final int SECURITY_CODE_ERROR = 7;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/ServiceResult.java",
    "content": "package com.orange.verify.api.sr;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n@Data\npublic class ServiceResult<T> implements Serializable {\n\n    private Integer code;\n\n    private String msg;\n\n    private T data;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/SoftImplGetSoftDescEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class SoftImplGetSoftDescEnum implements Serializable {\n\n    public static final int SOFT_EMPTY = 1;\n\n    public static final int SOFT_CLOSE = 2;\n\n    public static final int SUCCESS = 3;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/sr/SoftLeaveMessageImplCreateEnum.java",
    "content": "package com.orange.verify.api.sr;\n\nimport java.io.Serializable;\n\npublic class SoftLeaveMessageImplCreateEnum implements Serializable {\n\n    public static final int LEAVE_MESSAGE_SEND_SUCCESS = 1;\n\n    public static final int SOFT_EMPTY = 2;\n\n    public static final int SOFT_CLOSE = 3;\n\n    public static final int BAIDU_API_ERROR = 4;\n\n    public static final int LEAVE_MESSAGE_SEND_ERROR = 5;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/AccountLoginLogVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.AccountLoginLog;\nimport lombok.Data;\n\n@Data\npublic class AccountLoginLogVo extends AccountLoginLog {\n\n    private String softName;\n\n    private String accountName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/AccountRegisterLogVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.AccountRegisterLog;\nimport lombok.Data;\n\n@Data\npublic class AccountRegisterLogVo extends AccountRegisterLog {\n\n    private String softName;\n\n    private String accountName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/AccountVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.Account;\nimport lombok.Data;\n\n@Data\npublic class AccountVo extends Account {\n\n    private String softId;\n\n    private String softName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/CardTypeVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.CardType;\nimport lombok.Data;\n\n@Data\npublic class CardTypeVo extends CardType {\n\n    private String softName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/CardVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.Card;\nimport lombok.Data;\n\n@Data\npublic class CardVo extends Card {\n\n    private String softId;\n\n    private String softName;\n\n    private Integer cardTypeUnit;\n\n    private Long cardTypeValue;\n\n    private String accountId;\n\n    private String accountName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/SoftLeaveMessageVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.SoftLeaveMessage;\nimport lombok.Data;\n\n@Data\npublic class SoftLeaveMessageVo extends SoftLeaveMessage {\n\n    private String softId;\n\n    private String softName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/SoftVersionsVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.SoftVersions;\nimport lombok.Data;\n\n@Data\npublic class SoftVersionsVo extends SoftVersions {\n\n    private String softName;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/SoftVo.java",
    "content": "package com.orange.verify.api.vo;\n\nimport com.orange.verify.api.bean.Soft;\nimport lombok.Data;\n\n@Data\npublic class SoftVo extends Soft {\n\n    //软件用户数量\n    private Long accountTotal;\n\n    //最新版本\n    private String versionsNum;\n\n    private Long leaveMessageNum;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/AccountBindingCardVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n@Data\npublic class AccountBindingCardVo implements Serializable {\n\n    @NotBlank(message = \"用户名不能为空\")\n    @Size(min = 5,max = 10,message = \"用户名长度是5到10位哟\")\n    private String username;\n\n    @NotBlank(message = \"密码不能为空\")\n    private String password;\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n    @NotBlank(message = \"充值卡密不能为空\")\n    private String cardNumber;\n\n    /**\n     * 用户电脑的机器码\n     * code\n     */\n    @NotBlank(message = \"code不能为空\")\n    private String code;\n\n    @NotBlank(message = \"公钥不能为空\")\n    String publicKey;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/AccountBindingCodeVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n@Data\npublic class AccountBindingCodeVo implements Serializable {\n\n    @NotBlank(message = \"用户名不能为空\")\n    @Size(min = 5,max = 10,message = \"用户名长度是5到10位哟\")\n    private String username;\n\n    @NotBlank(message = \"密码不能为空\")\n    private String password;\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n    /**\n     * 用户电脑的机器码\n     * code\n     */\n    @NotBlank(message = \"code不能为空\")\n    private String code;\n\n    @NotBlank(message = \"公钥不能为空\")\n    String publicKey;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/AccountLoginVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n@Data\npublic class AccountLoginVo implements Serializable {\n\n    @NotBlank(message = \"用户名不能为空\")\n    @Size(min = 5,max = 10,message = \"用户名长度是5到10位哟\")\n    private String username;\n\n    @NotBlank(message = \"密码不能为空\")\n    private String password;\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n    @NotBlank(message = \"公钥不能为空\")\n    String publicKey;\n\n    /**\n     * 用户电脑的机器码\n     * code\n     */\n    @NotBlank(message = \"code不能为空\")\n    private String code;\n\n    private String ip;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/AccountRegisterVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n@Data\npublic class AccountRegisterVo implements Serializable {\n\n    @NotBlank(message = \"用户名不能为空\")\n    @Size(min = 5,max = 10,message = \"用户名长度是5到10位哟\")\n    private String username;\n\n    @NotBlank(message = \"QQ号不能为空\")\n    @Size(min = 1,max = 10,message = \"QQ号长度是1到10位哟\")\n    private String qq;\n\n    @NotBlank(message = \"密码不能为空\")\n    private String password;\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n    @NotBlank(message = \"安全码不能为空\")\n    @Size(min = 5,max = 10,message = \"安全码长度是5到10位哟\")\n    private String securityCode;\n\n    /**\n     * 用户电脑的机器码\n     * code\n     */\n    @NotBlank(message = \"code不能为空\")\n    private String code;\n    \n    /**\n     * 验证码\n     */\n    @NotBlank(message = \"验证码不能为空\")\n    @Size(min = 6,max = 6,message = \"验证码长度是6位哟\")\n    private String vc;\n\n    /**\n     * 用户的真实姓名\n     * name\n     */\n    @NotBlank(message = \"名字不能为空\")\n    @Size(min = 1,max = 10,message = \"真实姓名长度是1到10位哟\")\n    private String name;\n\n    private String ip;\n\n    @NotBlank(message = \"公钥不能为空\")\n    String publicKey;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/AccountUpdatePasswordVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n@Data\npublic class AccountUpdatePasswordVo implements Serializable {\n\n    @NotBlank(message = \"用户名不能为空\")\n    @Size(min = 5,max = 10,message = \"用户名长度是5到10位哟\")\n    private String username;\n\n    @NotBlank(message = \"新密码不能为空\")\n    @Size(min = 5,max = 10,message = \"新密码长度是5到10位哟\")\n    private String password;\n\n    @NotBlank(message = \"安全码不能为空\")\n    @Size(min = 5,max = 10,message = \"安全码长度是5到10位哟\")\n    private String securityCode;\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/AccountVerificationCodeVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport java.io.Serializable;\n\n@Data\npublic class AccountVerificationCodeVo implements Serializable {\n\n    private String publicKey;\n\n    private String code;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/CardTimeLimitVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n@Data\npublic class CardTimeLimitVo implements Serializable {\n\n    private Long startDate;\n\n    private Long endDate;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/SoftGetSoftDescVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport java.io.Serializable;\n\n@Data\npublic class SoftGetSoftDescVo implements Serializable {\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n    /**\n     * 换绑策略 0.支持换绑定 1.不支持换绑定\n     * change_strategy\n     */\n    private Integer changeStrategy;\n\n    /**\n     * 多开策略 0.只支持单机 1.无限制\n     * dosing_strategy\n     */\n    private Integer dosingStrategy;\n\n    /**\n     * 软件名称\n     * name\n     */\n    private String name;\n\n    /**\n     * 公告\n     * notice\n     */\n    private String notice;\n\n    /**\n     * 关闭注册后的返回信息\n     * registe_close_msg\n     */\n    private String registeCloseMsg;\n\n    /**\n     * 注册状态 0.开放注册 1.关闭注册\n     * register_status\n     */\n    private Integer registerStatus;\n\n    /**\n     * 关闭状态下的返回信息\n     * service_close_msg\n     */\n    private String serviceCloseMsg;\n\n    /**\n     * 服务状态 0.收费 1.免费开放 2.关闭开放使用\n     * service_status\n     */\n    private Integer serviceStatus;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/SoftLeaveMeesageSubmitVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n@Data\npublic class SoftLeaveMeesageSubmitVo implements Serializable {\n\n    @NotBlank(message = \"留言内容不能为空\")\n    @Size(min = 1,max = 255,message = \"留言内容长度是255位哟\")\n    private String content;\n\n    @NotBlank(message = \"留言QQ不能为空\")\n    @Size(min = 1,max = 10,message = \"留言QQ长度是10位哟\")\n    private String qq;\n\n    @NotBlank(message = \"软件id不能为空\")\n    private String softId;\n\n    private String ip;\n\n}\n"
  },
  {
    "path": "api/src/main/java/com/orange/verify/api/vo/open/SoftVersionsVo.java",
    "content": "package com.orange.verify.api.vo.open;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n@Data\npublic class SoftVersionsVo implements Serializable {\n\n    private String notice;\n\n    private Integer novatioNecessaria;\n\n    private String number;\n\n    private String updateUrl;\n\n}\n"
  },
  {
    "path": "api/src/main/resources/application.properties",
    "content": ""
  },
  {
    "path": "builder/.gitignore",
    "content": "/target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n.sts4-cache\n\n### IntelliJ IDEA ###\n.idea\n*.iws\n*.iml\n*.ipr\n\n### NetBeans ###\n/nbproject/private/\n/build/\n/nbbuild/\n/dist/\n/nbdist/\n/.nb-gradle/"
  },
  {
    "path": "builder/.mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip\n"
  },
  {
    "path": "builder/mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven2 Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\n  # TODO classpath?\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        wget \"$jarUrl\" -O \"$wrapperJarPath\"\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        curl -o \"$wrapperJarPath\" \"$jarUrl\"\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "builder/mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    http://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven2 Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\nFOR /F \"tokens=1,2 delims==\" %%A IN (%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties) DO (\n\tIF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B \n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    echo Found %WRAPPER_JAR%\n) else (\n    echo Couldn't find %WRAPPER_JAR%, downloading it ...\n\techo Downloading from: %DOWNLOAD_URL%\n    powershell -Command \"(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"\n    echo Finished downloading %WRAPPER_JAR%\n)\n@REM End of extension\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "builder/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.orange.verify</groupId>\n    <artifactId>builder</artifactId>\n    <version>1.0.0</version>\n    <packaging>jar</packaging>\n\n    <name>builder</name>\n    <description>Demo project for Spring Boot</description>\n\n    <parent>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-parent</artifactId>\n        <version>2.1.0.RELEASE</version>\n        <relativePath/> <!-- lookup parent from repository -->\n    </parent>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-jpa</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-jdbc</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.mybatis.generator</groupId>\n            <artifactId>mybatis-generator-core</artifactId>\n            <version>1.3.7</version>\n        </dependency>\n\n        <dependency>\n            <groupId>mysql</groupId>\n            <artifactId>mysql-connector-java</artifactId>\n            <version>5.1.40</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.baomidou</groupId>\n            <artifactId>mybatis-plus-boot-starter</artifactId>\n            <version>3.0.6</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <version>1.16.18</version>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n            </plugin>\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/Account.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 软件用户表\n * 每个软件对应一批用户\n * 软件和用户之间是一对多的关系...\n */\n@Entity(name = \"t_account\")\n@Table(appliesTo = \"t_account\",comment = \"软件用户表\")\npublic class Account extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '软件绑定id'\")\n    private String softId;\n\n    @Column(columnDefinition = \"varchar(100) comment '卡密绑定id'\")\n    private String cardId;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户名'\")\n    private String username;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户密码'\")\n    private String password;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户电脑的机器码'\")\n    private String code;\n\n    @Column(columnDefinition = \"varchar(100) comment '安全码，找回密码用'\")\n    private String securityCode;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户的联系QQ'\")\n    private String qq;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户的联系手机号'\")\n    private String phoneNumber;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户的真实姓名'\")\n    private String name;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户注册的时候ip地址'\")\n    private String createIp;\n\n    @Column(columnDefinition = \"varchar(255) comment '创建时候的ip信息'\")\n    private String createIpInfo;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '是否加入了黑名单 0.不是 1.是的'\")\n    private Integer blacklist;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/AccountLoginLog.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Entity;\n\n/**\n * 用户登录日志\n */\n@Entity(name = \"t_account_login_log\")\n@Table(appliesTo = \"t_account_login_log\",comment = \"用户登录日志\")\npublic class AccountLoginLog extends BaseEntity {\n\n    private String accountId;\n\n    private String ip;\n\n    private String ipInfo;\n\n    private String softId;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/AccountRegisterLog.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Entity;\n\n/**\n * 用户注册日志\n */\n@Entity(name = \"t_account_register_log\")\n@Table(appliesTo = \"t_account_register_log\",comment = \"用户注册日志\")\npublic class AccountRegisterLog extends BaseEntity {\n\n    private String accountId;\n\n    private String ip;\n\n    private String ipInfo;\n\n    private String softId;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/BaiduMapApi.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 百度地理api配置\n * 通过ip拿到ip地理信息\n */\n@Entity(name = \"t_baidu_map_api\")\n@Table(appliesTo = \"t_baidu_map_api\",comment = \"百度地理api配置\")\npublic class BaiduMapApi extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment 'appkey'\")\n    private String appkey;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/Card.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 软件充值卡密\n */\n@Entity(name = \"t_card\")\n@Table(appliesTo = \"t_card\",comment = \"软件充值卡\")\npublic class Card extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '用户绑定id'\")\n    private String accountId;\n\n    @Column(columnDefinition = \"varchar(100) comment '卡类绑定id'\")\n    private String cardTypeId;\n\n    @Column(columnDefinition = \"varchar(255) comment '充值卡号'\")\n    private String cardNumber;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '使用状态 0.未使用 1.已使用'\")\n    private Integer useStatus;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '销售状态 0.未卖出 1.已卖出'\")\n    private Integer sellStatus;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '是否封停使用 0.未封停 1.已封停'\")\n    private Integer closure;\n\n    @Column(columnDefinition = \"bigint comment '开始使用时间'\")\n    private Long startDate;\n\n    @Column(columnDefinition = \"bigint comment '结束时间'\")\n    private Long endDate;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/CardType.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 软件充值卡类型\n */\n@Entity(name = \"t_card_type\")\n@Table(appliesTo = \"t_card_type\",comment = \"软件充值卡类型\")\npublic class CardType extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '软件绑定id'\")\n    private String softId;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '卡类单位 0.分 1.时 2.天 3.周 4.月 5.年'\")\n    private Integer unit;\n\n    @Column(columnDefinition = \"int comment '卡类值 比如对应的是分填1就是1分钟 以此类推'\")\n    private Integer value;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/EmailAccount.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 邮箱账户\n * 用于通知 留言信息 给那个...\n */\n@Entity(name = \"t_email_account\")\n@Table(appliesTo = \"t_email_account\",comment = \"邮箱账户\")\npublic class EmailAccount extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(255) comment '用户名'\")\n    private String username;\n\n    @Column(columnDefinition = \"varchar(255) comment '用户密码'\")\n    private String password;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '是否使用 0.使用 1.不使用'\")\n    private Integer isUse;\n\n    @Column(columnDefinition = \"bigint default 0 comment '被使用的次数'\")\n    private Long total;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/Soft.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 软件\n */\n@Entity(name = \"t_soft\")\n@Table(appliesTo = \"t_soft\",comment = \"软件\")\npublic class Soft extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '软件名称'\")\n    private String name;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '服务状态 0.收费 1.免费开放 2.关闭开放使用'\")\n    private Integer serviceStatus;\n\n    @Column(columnDefinition = \"varchar(255) default '' comment '关闭状态下的返回信息'\")\n    private String serviceCloseMsg;\n\n    @Column(columnDefinition = \"varchar(255) comment '公告'\")\n    private String notice;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '注册状态 0.开放注册 1.关闭注册'\")\n    private Integer registerStatus;\n\n    @Column(columnDefinition = \"varchar(255) default '' comment '关闭注册后的返回信息'\")\n    private String registeCloseMsg;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '多开策略 0.只支持单机 1.无限制'\")\n    private Integer dosingStrategy;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '换绑策略 0.支持换绑定 1.不支持换绑定'\")\n    private Integer changeStrategy;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '软件被留言 是否邮件通知 0.通知 1.不通知'\")\n    private Integer emailNotificatio;\n\n    @Column(columnDefinition = \"varchar(100) default '' comment '被通知的邮箱账户名'\")\n    private String emailName;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/SoftLeaveMessage.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 软件留言\n */\n@Entity(name = \"t_soft_leave_message\")\n@Table(appliesTo = \"t_soft_leave_message\",comment = \"软件留言\")\npublic class SoftLeaveMessage extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '软件绑定id'\")\n    private String softId;\n\n    @Column(columnDefinition = \"varchar(255) comment '用户留言内容'\")\n    private String content;\n\n    @Column(columnDefinition = \"varchar(100) comment '用户的QQ号'\")\n    private String qq;\n\n    private String ip;\n\n    private String ipInfo;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/SoftVersions.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 软件版本控制\n */\n@Entity(name = \"t_soft_versions\")\n@Table(appliesTo = \"t_soft_versions\",comment = \"软件版本控制\")\npublic class SoftVersions extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '软件绑定id'\")\n    private String softId;\n\n    @Column(columnDefinition = \"varchar(100) comment '版本号'\")\n    private String number;\n\n    @Column(columnDefinition = \"int(2) default 0 comment '是否强制更新 0.不强制 1.强制'\")\n    private Integer novatioNecessaria;\n\n    @Column(columnDefinition = \"varchar(255) default '' comment '更新url'\")\n    private String updateUrl;\n\n    @Column(columnDefinition = \"varchar(255) default '' comment '更新公告'\")\n    private String notice;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/api/User.java",
    "content": "package com.orange.verify.api;\n\nimport com.orange.verify.common.BaseEntity;\nimport org.hibernate.annotations.Table;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\n\n/**\n * 平台管理用户\n * 必须满足三个条件才可登陆\n * flag = 另外的条件标志\n */\n@Entity(name = \"t_user\")\n@Table(appliesTo = \"t_user\",comment = \"平台管理用户\")\npublic class User extends BaseEntity {\n\n    @Column(columnDefinition = \"varchar(100) comment '管理用户名'\")\n    private String username;\n\n    @Column(columnDefinition = \"varchar(100) comment '管理用户密码'\")\n    private String password;\n\n    @Column(columnDefinition = \"varchar(100) comment '管理标识符'\")\n    private String flag;\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/builder/BuilderApplication.java",
    "content": "package com.orange.verify.builder;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.autoconfigure.domain.EntityScan;\n\n/**\n * 根据填写的api bean 生成到数据库\n * @author orange\n */\n@SpringBootApplication\n@EntityScan(basePackages={\"${entity.scan.base.packages}\"})\npublic class BuilderApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(BuilderApplication.class, args);\n    }\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/builder/Generator.java",
    "content": "package com.orange.verify.builder;\n\nimport org.mybatis.generator.api.MyBatisGenerator;\nimport org.mybatis.generator.config.Configuration;\nimport org.mybatis.generator.config.xml.ConfigurationParser;\nimport org.mybatis.generator.internal.DefaultShellCallback;\n\nimport java.io.InputStream;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Properties;\n\n/**\n * 根据数据库反向生成到bean\n * @author orange\n */\npublic class Generator {\n\n    public static void main( String[] args ) throws Exception {\n\n        Properties properties = new Properties();\n        InputStream in = Generator.class.getClassLoader().getResourceAsStream(\"application.properties\");\n        properties.load(in);\n        String generator = properties.getProperty(\"generator\");\n\n        List<String> warnings = new ArrayList<String>();\n        boolean overwrite = true;\n        ClassLoader classloader = Thread.currentThread().getContextClassLoader();\n        InputStream is = classloader.getResourceAsStream(generator);\n        ConfigurationParser cp = new ConfigurationParser(warnings);\n        Configuration config = cp.parseConfiguration(is);\n        DefaultShellCallback callback = new DefaultShellCallback(overwrite);\n        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);\n        myBatisGenerator.generate(null);\n\n    }\n\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/builder/config/EmptyCommentGenerator.java",
    "content": "package com.orange.verify.builder.config;\n\nimport org.mybatis.generator.api.CommentGenerator;\nimport org.mybatis.generator.api.IntrospectedColumn;\nimport org.mybatis.generator.api.IntrospectedTable;\nimport org.mybatis.generator.api.dom.java.*;\nimport org.mybatis.generator.api.dom.xml.XmlElement;\n\nimport java.util.Properties;\nimport java.util.Set;\n\npublic class EmptyCommentGenerator implements CommentGenerator {\n\n    @Override\n    public void addConfigurationProperties(Properties properties) {\n\n    }\n\n    @Override\n    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {\n\n    }\n\n    @Override\n    public void addFieldComment(Field field, IntrospectedTable introspectedTable) {\n\n    }\n\n    @Override\n    public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {\n\n    }\n\n    @Override\n    public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {\n\n    }\n\n    @Override\n    public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean b) {\n\n    }\n\n    @Override\n    public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {\n\n    }\n\n    @Override\n    public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {\n\n    }\n\n    @Override\n    public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {\n\n    }\n\n    @Override\n    public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {\n\n    }\n\n    @Override\n    public void addJavaFileComment(CompilationUnit compilationUnit) {\n\n    }\n\n    @Override\n    public void addComment(XmlElement xmlElement) {\n\n    }\n\n    @Override\n    public void addRootComment(XmlElement xmlElement) {\n\n    }\n\n    @Override\n    public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {\n\n    }\n\n    @Override\n    public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {\n\n    }\n\n    @Override\n    public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {\n\n    }\n\n    @Override\n    public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {\n\n    }\n\n    @Override\n    public void addClassAnnotation(InnerClass innerClass, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {\n\n    }\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/builder/config/MySQLCommentGenerator.java",
    "content": "package com.orange.verify.builder.config;\n\nimport com.orange.verify.common.BaseEntity;\nimport lombok.extern.java.Log;\nimport org.mybatis.generator.api.FullyQualifiedTable;\nimport org.mybatis.generator.api.IntrospectedColumn;\nimport org.mybatis.generator.api.IntrospectedTable;\nimport org.mybatis.generator.api.dom.java.*;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Properties;\n\n@Log\npublic class MySQLCommentGenerator extends EmptyCommentGenerator {\n\n    private Properties properties;\n\n    public MySQLCommentGenerator() {\n        properties = new Properties();\n    }\n\n    @Override\n    public void addConfigurationProperties(Properties properties) {\n        // 获取自定义的 properties\n        this.properties.putAll(properties);\n    }\n\n    @Override\n    public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {\n\n        String author = properties.getProperty(\"author\");\n        String dateFormat = properties.getProperty(\"dateFormat\", \"yyyy-MM-dd\");\n        SimpleDateFormat dateFormatter = new SimpleDateFormat(dateFormat);\n\n        FullyQualifiedTable fullyQualifiedTable = introspectedTable.getFullyQualifiedTable();\n\n        Field field = new Field();\n        field.setVisibility(JavaVisibility.PRIVATE);\n        field.setType(new FullyQualifiedJavaType(\"long\"));\n        field.setStatic(true);\n        field.setFinal(true);\n        field.setName(\"serialVersionUID\");\n        field.setInitializationString(\"1L\");\n        topLevelClass.addField(field);\n\n        FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType(\"Serializable\");\n        FullyQualifiedJavaType imp = new FullyQualifiedJavaType(\"java.io.Serializable\");\n        FullyQualifiedJavaType imp2 = new FullyQualifiedJavaType(\"com.baomidou.mybatisplus.annotation.*\");\n        topLevelClass.addSuperInterface(fqjt);\n        topLevelClass.addImportedType(imp);\n        topLevelClass.addImportedType(imp2);\n\n        topLevelClass.addJavaDocLine(\"/**\");\n        topLevelClass.addJavaDocLine(\" * \" + introspectedTable.getRemarks());\n        topLevelClass.addJavaDocLine(\" * \" + fullyQualifiedTable.getIntrospectedTableName());\n        topLevelClass.addJavaDocLine(\" * @author \" + author);\n        topLevelClass.addJavaDocLine(\" * @date \" + dateFormatter.format(new Date()));\n        topLevelClass.addJavaDocLine(\" */\");\n        topLevelClass.addJavaDocLine(\"@TableName(\\\"\"+ fullyQualifiedTable.getIntrospectedTableName() +\"\\\")\");\n        topLevelClass.addJavaDocLine(\"@KeySequence(\\\"SEQ_TEST\\\")\");\n\n        log.info(\"数据库表：\" + fullyQualifiedTable.getIntrospectedTableName() + \" 生成...\");\n    }\n\n    @Override\n    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {\n\n        // 获取列注释\n        String remarks = introspectedColumn.getRemarks();\n\n        if (introspectedColumn.getJavaProperty().equals(\"id\")) {\n            field.addJavaDocLine(\"@TableId(value = \\\"\"+ introspectedColumn.getActualColumnName() +\"\\\", type = IdType.ID_WORKER_STR)\");\n        }\n        else if (introspectedColumn.getJavaProperty().equals(\"delFlag\")) {\n            field.addJavaDocLine(\"@TableLogic\");\n        }\n        else if (introspectedColumn.getJavaProperty().equals(\"createDate\")) {\n            field.addJavaDocLine(\"@TableField(value = \\\"\"+ introspectedColumn.getActualColumnName() +\"\\\",fill = FieldFill.INSERT)\");\n        }\n        else if (introspectedColumn.getJavaProperty().equals(\"updateDate\")) {\n            field.addJavaDocLine(\"@TableField(value = \\\"\"+ introspectedColumn.getActualColumnName() +\"\\\",fill = FieldFill.UPDATE)\");\n        }\n        else {\n            field.addJavaDocLine(\"/**\");\n            if (!remarks.equals(\"\")) {\n                field.addJavaDocLine(\" * \" + remarks);\n            }\n            field.addJavaDocLine(\" * \" + introspectedColumn.getActualColumnName());\n            field.addJavaDocLine(\" */\");\n        }\n\n\n\n    }\n}\n"
  },
  {
    "path": "builder/src/main/java/com/orange/verify/common/BaseEntity.java",
    "content": "package com.orange.verify.common;\n\nimport javax.persistence.Column;\nimport javax.persistence.Id;\nimport javax.persistence.MappedSuperclass;\nimport java.io.Serializable;\n\n@MappedSuperclass\npublic abstract class BaseEntity implements Serializable {\n\n    private static final long serialVersionUID = 1L;\n\n    @Id\n    @Column(nullable = false,columnDefinition = \"varchar(100) comment '主键'\")\n    private String id;\n\n    @Column(columnDefinition = (\"int(2) default 0 comment '删除判断'\"))\n    private int delFlag;\n\n    @Column(columnDefinition = (\"varchar(100) default null comment '备注'\"))\n    private String remarks;\n\n    @Column(columnDefinition = (\"bigint(20) default null comment '创建时间'\"))\n    private Long createDate;\n\n    @Column(columnDefinition = (\"bigint(20) default null comment '更新时间'\"))\n    private Long updateDate;\n\n}\n"
  },
  {
    "path": "builder/src/main/resources/application.properties",
    "content": "\nentity.scan.base.packages=com.orange.verify.api\ngenerator=verify-generator-config.xml\n\nspring.jpa.show-sql=true\nspring.datasource.url=jdbc:mysql://localhost:3306/com_orange_verify_db?characterEncoding=UTF-8\nspring.datasource.username=root\nspring.datasource.password=root\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\n\n#hibernateɳıĬInnoDB\nspring.jpa.database-platform: org.hibernate.dialect.MySQL5InnoDBDialect\n\nspring.jpa.properties.hibernate.hbm2ddl.auto=create\nspring.jpa.properties.hibernate.show_sql=false"
  },
  {
    "path": "builder/src/main/resources/verify-generator-config.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<!DOCTYPE generatorConfiguration PUBLIC\r\n        \"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd\">\r\n\r\n<generatorConfiguration>\r\n\r\n    <context id=\"mysql\" defaultModelType=\"hierarchical\" targetRuntime=\"MyBatis3Simple\" >\r\n        <!-- 生成的 Java 文件的编码 -->\r\n        <property name=\"javaFileEncoding\" value=\"UTF-8\"/>\r\n        <!-- 格式化 Java 代码 -->\r\n        <property name=\"javaFormatter\" value=\"org.mybatis.generator.api.dom.DefaultJavaFormatter\"/>\r\n        <!-- 格式化 XML 代码 -->\r\n        <property name=\"xmlFormatter\" value=\"org.mybatis.generator.api.dom.DefaultXmlFormatter\"/>\r\n\r\n        <!-- 自定义注释生成器 -->\r\n        <commentGenerator type=\"com.orange.verify.builder.config.MySQLCommentGenerator\">\r\n            <property name=\"author\" value=\"Orange\"/>\r\n            <property name=\"dateFormat\" value=\"yyyy/MM/dd\"/>\r\n        </commentGenerator>\r\n\r\n        <!-- 配置数据库连接 -->\r\n        <jdbcConnection driverClass=\"com.mysql.jdbc.Driver\" connectionURL=\"jdbc:mysql://localhost:3306/com_orange_verify_db?characterEncoding=utf-8\" userId=\"root\" password=\"root\">\r\n            <!-- 设置 useInformationSchema 属性为 true -->\r\n            <property name=\"useInformationSchema\" value=\"true\" />\r\n        </jdbcConnection>\r\n\r\n        <!-- 生成模型的包名和位置 -->\r\n        <javaModelGenerator targetPackage=\"com.orange.verify.api.bean\"\r\n                            targetProject=\"api/src/main/java\">\r\n            <property name=\"enableSubPackages\" value=\"true\" />\r\n            <property name=\"trimStrings\" value=\"true\" />\r\n        </javaModelGenerator>\r\n        <!-- 生成映射文件的包名和位置 -->\r\n        <!--<sqlMapGenerator targetPackage=\"mapper\"-->\r\n                         <!--targetProject=\"src/main/resources\">-->\r\n            <!--<property name=\"enableSubPackages\" value=\"true\" />-->\r\n        <!--</sqlMapGenerator>-->\r\n        <!-- 生成DAO的包名和位置 -->\r\n        <!--<javaClientGenerator type=\"XMLMAPPER\"-->\r\n                             <!--targetPackage=\"com.orange.verify.dal.mapper\" targetProject=\"src/main/java\">-->\r\n            <!--<property name=\"enableSubPackages\" value=\"true\" />-->\r\n        <!--</javaClientGenerator>-->\r\n\r\n        <!-- 设置数据库的表名和实体类名 -->\r\n        <table tableName=\"t_account\" domainObjectName=\"Account\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_card\" domainObjectName=\"Card\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_email_account\" domainObjectName=\"EmailAccount\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_soft\" domainObjectName=\"Soft\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_soft_leave_message\" domainObjectName=\"SoftLeaveMessage\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_soft_versions\" domainObjectName=\"SoftVersions\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_user\" domainObjectName=\"User\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_card_type\" domainObjectName=\"CardType\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_account_login_log\" domainObjectName=\"AccountLoginLog\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_account_register_log\" domainObjectName=\"AccountRegisterLog\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n        <table tableName=\"t_baidu_map_api\" domainObjectName=\"BaiduMapApi\">\r\n            <!-- generatedKey用于生成生成主键的方法 -->\r\n            <generatedKey column=\"id\" sqlStatement=\"SELECT LAST_INSERT_ID()\"/>\r\n        </table>\r\n\r\n    </context>\r\n\r\n</generatorConfiguration>"
  },
  {
    "path": "builder/src/test/java/com/orange/verify/builder/BuilderApplicationTests.java",
    "content": "package com.orange.verify.builder;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringRunner;\n\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class BuilderApplicationTests {\n\n    @Test\n    public void contextLoads() {\n    }\n\n}\n"
  },
  {
    "path": "common/.gitignore",
    "content": "/target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n.sts4-cache\n\n### IntelliJ IDEA ###\n.idea\n*.iws\n*.iml\n*.ipr\n\n### NetBeans ###\n/nbproject/private/\n/build/\n/nbbuild/\n/dist/\n/nbdist/\n/.nb-gradle/"
  },
  {
    "path": "common/.mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip\n"
  },
  {
    "path": "common/mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven2 Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\n  # TODO classpath?\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        wget \"$jarUrl\" -O \"$wrapperJarPath\"\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        curl -o \"$wrapperJarPath\" \"$jarUrl\"\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "common/mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    http://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven2 Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar\"\nFOR /F \"tokens=1,2 delims==\" %%A IN (%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties) DO (\n\tIF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B \n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    echo Found %WRAPPER_JAR%\n) else (\n    echo Couldn't find %WRAPPER_JAR%, downloading it ...\n\techo Downloading from: %DOWNLOAD_URL%\n    powershell -Command \"(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"\n    echo Finished downloading %WRAPPER_JAR%\n)\n@REM End of extension\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "common/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.orange.verify</groupId>\n    <artifactId>common</artifactId>\n    <version>1.0.0</version>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n    </properties>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>cn.hutool</groupId>\n            <artifactId>hutool-all</artifactId>\n            <version>4.2.1</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <version>1.16.18</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n            <version>3.8.1</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-codec</groupId>\n            <artifactId>commons-codec</artifactId>\n            <version>1.11</version>\n            <scope>compile</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.sun.mail</groupId>\n            <artifactId>javax.mail</artifactId>\n            <version>1.6.2</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.tomcat.embed</groupId>\n            <artifactId>tomcat-embed-core</artifactId>\n            <version>8.5.34</version>\n            <scope>compile</scope>\n        </dependency>\n\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n            </plugin>\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "common/src/main/java/com/orange/verify/common/email/MailUtil.java",
    "content": "package com.orange.verify.common.email;\n\nimport com.sun.mail.util.MailSSLSocketFactory;\n\nimport javax.mail.*;\nimport javax.mail.internet.InternetAddress;\nimport javax.mail.internet.MimeMessage;\nimport java.security.GeneralSecurityException;\nimport java.util.Properties;\n\n/**\n * 用于QQ邮件封装\n * @author Orange\n * @date 2018/11/1\n */\npublic class MailUtil {\n\n    private String senderAccount;\n\n    private String senderPassword;\n\n    /**\n     * @param senderAccount 发件人邮箱号\n     * @param senderPassword 发件人密码\n     */\n    public MailUtil(String senderAccount, String senderPassword) {\n        this.senderAccount = senderAccount;\n        this.senderPassword = senderPassword;\n    }\n\n    /**\n     * @param senderObject 接收者\n     * @param title 发送标题\n     * @param content 发送内容\n     */\n    public void send(String senderObject,String title,String content) throws MessagingException,\n            GeneralSecurityException {\n\n        // 获取系统属性\n        Properties properties = System.getProperties();\n\n        // 设置邮件服务器\n        properties.setProperty(\"mail.smtp.host\", \"smtp.qq.com\");\n\n        properties.put(\"mail.smtp.auth\", \"true\");\n        MailSSLSocketFactory sf = new MailSSLSocketFactory();\n        sf.setTrustAllHosts(true);\n        properties.put(\"mail.smtp.ssl.enable\", \"true\");\n        properties.put(\"mail.smtp.ssl.socketFactory\", sf);\n\n        // 获取默认session对象\n        Session session = Session.getDefaultInstance(properties,new Authenticator(){\n            @Override\n            public PasswordAuthentication getPasswordAuthentication()\n            {\n                return new PasswordAuthentication(senderAccount, senderPassword); //发件人邮件用户名、密码\n            }\n        });\n\n        // 创建默认的 MimeMessage 对象\n        MimeMessage message = new MimeMessage(session);\n\n        // Set From: 头部头字段\n        message.setFrom(new InternetAddress(senderAccount));\n\n        // Set To: 头部头字段\n        message.addRecipient(Message.RecipientType.TO, new InternetAddress(senderObject));\n\n        // Set Subject: 头部头字段\n        message.setSubject(title);\n\n        // 设置消息体\n        message.setText(content);\n\n        // 发送消息\n        Transport.send(message);\n\n    }\n\n}\n"
  },
  {
    "path": "common/src/main/java/com/orange/verify/common/ip/BaiduIp.java",
    "content": "package com.orange.verify.common.ip;\n\nimport cn.hutool.core.text.UnicodeUtil;\nimport cn.hutool.http.HttpRequest;\nimport cn.hutool.http.HttpResponse;\nimport cn.hutool.http.HttpStatus;\nimport cn.hutool.json.JSONObject;\nimport lombok.extern.java.Log;\n\n/**\n * @author Orange\n * @date 2018/12/4\n */\n@Log\npublic class BaiduIp {\n\n    public static final String API_REQUEST_ERROR = \"API_REQUEST_ERROR\";\n\n    public static final String API_BAIDU_ERROR = \"API_BAIDU_ERROR\";\n\n    private String ak = \"\";\n\n    public static BaiduIp start(String ak) {\n        return new BaiduIp().init(ak);\n    }\n\n    private BaiduIp init(String ak) {\n        this.ak = ak;\n        return this;\n    }\n\n    /**\n     * 根据 用户ip 获取 所在地\n     * @param ip 用户上网的IP地址\n     * @return\n     * @throws Exception\n     */\n    public String getAddressByIp(String ip) throws Exception {\n\n        String url = \"https://api.map.baidu.com/location/ip\";\n\n        String data = \"?ip=\" + ip + \"&ak=\" + this.ak + \"&coor=bd09ll\";\n\n        HttpResponse execute = HttpRequest.get(url + data).execute();\n\n        if (execute.getStatus() == HttpStatus.HTTP_OK) {\n\n            String body = UnicodeUtil.toString(execute.body());\n\n            JSONObject addressJson = new JSONObject(body);\n\n            Integer status = (Integer) addressJson.get(\"status\");\n\n            if (status == 0) {\n\n                String content = addressJson.get(\"content\").toString();\n\n                JSONObject contentJson = new JSONObject(content);\n\n                String address = contentJson.get(\"address\").toString();\n\n                log.info(\"IP \" + ip + \" >>> \" + address);\n\n                return address;\n            }\n\n            throw new Exception(API_BAIDU_ERROR);\n\n        }\n\n        throw new Exception(API_REQUEST_ERROR);\n\n    }\n\n}\n"
  },
  {
    "path": "common/src/main/java/com/orange/verify/common/ip/IpUtil.java",
    "content": "package com.orange.verify.common.ip;\n\nimport org.apache.commons.lang3.StringUtils;\n\nimport javax.servlet.http.HttpServletRequest;\n\npublic class IpUtil {\n\n    /**\n     *获取Ip\n     *@paramrequest\n     *@return\n     */\n    public static String getIp(HttpServletRequest request){\n        String Xip = request.getHeader(\"X-Real-IP\");\n        String XFor = request.getHeader(\"X-Forwarded-For\");\n        if(StringUtils.isNotEmpty(XFor)&&!\"unKnown\".equalsIgnoreCase(XFor)){\n            int index=XFor.indexOf(\",\");\n            if(index!=-1){\n                return XFor.substring(0,index);\n            }else{\n                return XFor;\n            }\n        }\n        XFor=Xip;\n        if(StringUtils.isNotEmpty(XFor)&&!\"unKnown\".equalsIgnoreCase(XFor)){\n            return XFor;\n        }\n        if(StringUtils.isBlank(XFor)||\"unknown\".equalsIgnoreCase(XFor)){\n            XFor=request.getHeader(\"Proxy-Client-IP\");\n        }\n        if(StringUtils.isBlank(XFor)||\"unknown\".equalsIgnoreCase(XFor)){\n            XFor=request.getHeader(\"WL-Proxy-Client-IP\");\n        }\n        if(StringUtils.isBlank(XFor)||\"unknown\".equalsIgnoreCase(XFor)){\n            XFor=request.getHeader(\"HTTP_CLIENT_IP\");\n        }\n        if(StringUtils.isBlank(XFor)||\"unknown\".equalsIgnoreCase(XFor)){\n            XFor=request.getHeader(\"HTTP_X_FORWARDED_FOR\");\n        }\n        if(StringUtils.isBlank(XFor)||\"unknown\".equalsIgnoreCase(XFor)){\n            XFor=request.getRemoteAddr();\n        }\n        return XFor;\n    }\n\n}\n"
  },
  {
    "path": "common/src/main/java/com/orange/verify/common/rsa/RsaUtil.java",
    "content": "package com.orange.verify.common.rsa;\n\nimport org.apache.commons.codec.binary.Base64;\nimport sun.misc.BASE64Decoder;\n\nimport javax.crypto.Cipher;\nimport java.security.*;\nimport java.security.interfaces.RSAPrivateKey;\nimport java.security.interfaces.RSAPublicKey;\nimport java.security.spec.PKCS8EncodedKeySpec;\nimport java.security.spec.X509EncodedKeySpec;\nimport java.util.HashMap;\nimport java.util.Map;\n\n\n/**\n * 非对称加密算法RSA算法组件\n * 非对称算法一般是用来传送对称加密算法的密钥来使用的，相对于DH算法，RSA算法只需要一方构造密钥，不需要\n * 大费周章的构造各自本地的密钥对了。DH算法只能算法非对称算法的底层实现。而RSA算法算法实现起来较为简单\n *\n * @author kongqz\n */\npublic class RsaUtil {\n\n    //非对称密钥算法\n    public static final String KEY_ALGORITHM = \"RSA\";\n\n    /**\n     * 密钥长度，DH算法的默认密钥长度是1024\n     * 密钥长度必须是64的倍数，在512到65536位之间\n     */\n    private static final int KEY_SIZE = 1024;\n\n    //公钥\n    private static final String PUBLIC_KEY = \"RSAPublicKey\";\n\n    //私钥\n    private static final String PRIVATE_KEY = \"RSAPrivateKey\";\n\n    /**\n     * 初始化密钥对\n     *\n     * @return Map 甲方密钥的Map\n     */\n    public static Map<String, Object> initKey() throws Exception {\n\n        //实例化密钥生成器\n        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);\n        //初始化密钥生成器\n        keyPairGenerator.initialize(KEY_SIZE);\n        //生成密钥对\n        KeyPair keyPair = keyPairGenerator.generateKeyPair();\n        //甲方公钥\n        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();\n        //甲方私钥\n        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();\n        //将密钥存储在map中\n        Map<String, Object> keyMap = new HashMap<String, Object>();\n\n        keyMap.put(PUBLIC_KEY, publicKey);\n        keyMap.put(PRIVATE_KEY, privateKey);\n\n        return keyMap;\n    }\n\n    /**\n     * 私钥加密\n     *\n     * @param data 待加密数据\n     * @param key  密钥\n     * @return byte[] 加密数据\n     */\n    private static byte[] encryptByPrivateKey(byte[] data, byte[] key) throws Exception {\n\n        //取得私钥\n        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);\n        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);\n        //生成私钥\n        PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);\n        //数据加密\n        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());\n        cipher.init(Cipher.ENCRYPT_MODE, privateKey);\n        return cipher.doFinal(data);\n    }\n\n    /**\n     * 公钥加密\n     *\n     * @param data 待加密数据\n     * @param key  密钥\n     * @return byte[] 加密数据\n     */\n    private static byte[] encryptByPublicKey(byte[] data, byte[] key) throws Exception {\n\n        //实例化密钥工厂\n        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);\n        //初始化公钥\n        //密钥材料转换\n        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);\n        //产生公钥\n        PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);\n\n        //数据加密\n        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());\n        cipher.init(Cipher.ENCRYPT_MODE, pubKey);\n        return cipher.doFinal(data);\n    }\n\n    /**\n     * 私钥解密\n     *\n     * @param data 待解密数据\n     * @param key  密钥\n     * @return byte[] 解密数据\n     */\n    private static byte[] decryptByPrivateKey(byte[] data, byte[] key) throws Exception {\n        //取得私钥\n        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);\n        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);\n        //生成私钥\n        PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);\n        //数据解密\n        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());\n        cipher.init(Cipher.DECRYPT_MODE, privateKey);\n        return cipher.doFinal(data);\n    }\n\n    /**\n     * 公钥解密\n     *\n     * @param data 待解密数据\n     * @param key  密钥\n     * @return byte[] 解密数据\n     */\n    private static byte[] decryptByPublicKey(byte[] data, byte[] key) throws Exception {\n\n        //实例化密钥工厂\n        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);\n        //初始化公钥\n        //密钥材料转换\n        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);\n        //产生公钥\n        PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);\n        //数据解密\n        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());\n        cipher.init(Cipher.DECRYPT_MODE, pubKey);\n        return cipher.doFinal(data);\n    }\n\n    /**\n     * 取得私钥\n     *\n     * @param keyMap 密钥map\n     * @return byte[] 私钥\n     */\n    private static byte[] getPrivateKey(Map<String, Object> keyMap) {\n        Key key = (Key) keyMap.get(PRIVATE_KEY);\n        return key.getEncoded();\n    }\n\n    /**\n     * 取得公钥\n     *\n     * @param keyMap 密钥map\n     * @return byte[] 公钥\n     */\n    private static byte[] getPublicKey(Map<String, Object> keyMap) throws Exception {\n        Key key = (Key) keyMap.get(PUBLIC_KEY);\n        return key.getEncoded();\n    }\n\n    /**\n     * 生成公钥 base64加密返回 String\n     */\n    public static String getPublicKeyToBase64(Map<String, Object> keyMap) throws Exception {\n        byte[] publicKey = getPublicKey(keyMap);\n        return Base64.encodeBase64String(publicKey);\n    }\n\n    /**\n     * 生成私钥 base64加密返回 String\n     */\n    public static String getPrivateKeyToBase64(Map<String, Object> keyMap) throws Exception {\n        byte[] privateKey = getPrivateKey(keyMap);\n        return Base64.encodeBase64String(privateKey);\n    }\n\n    /**\n     * 私钥解密 base64首先解密To byte 再私钥解密\n     */\n    public static String decodeRsa(String rsa, String privateKey) throws Exception {\n\n        BASE64Decoder decoder = new BASE64Decoder();\n        byte[] buf = decoder.decodeBuffer(rsa);\n        byte[] bytes = decoder.decodeBuffer(privateKey);\n        byte[] result = decryptByPrivateKey(buf, bytes);\n\n        return new String(result);\n    }\n\n}"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.orange.verify</groupId>\n    <artifactId>verify-master</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n    <modules>\n\n        <module>api</module>\n        <module>admin</module>\n        <module>admin-web</module>\n        <module>builder</module>\n        <module>common</module>\n\n    </modules>\n\n\n</project>"
  },
  {
    "path": "sdk/易语言/encrypt.js",
    "content": "\r\nfunction encrypt(enValue,enPublicKey){var navigator=this;var window=this;(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?factory(exports):typeof define==='function'&&define.amd?define(['exports'],factory):(factory((global.JSEncrypt={})));}(this,(function(exports){'use strict';var BI_RM=\"0123456789abcdefghijklmnopqrstuvwxyz\";function int2char(n){return BI_RM.charAt(n);}function op_and(x,y){return x&y;}function op_or(x,y){return x|y;}function op_xor(x,y){return x^y;}function op_andnot(x,y){return x&~y;}function lbit(x){if(x==0){return-1;}var r=0;if((x&0xffff)==0){x>>=16;r+=16;}if((x&0xff)==0){x>>=8;r+=8;}if((x&0xf)==0){x>>=4;r+=4;}if((x&3)==0){x>>=2;r+=2;}if((x&1)==0){++r;}return r;}function cbit(x){var r=0;while(x!=0){x&=x-1;++r;}return r;}var b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";function hex2b64(h){var i;var c;var ret=\"\";for(i=0;i+3<=h.length;i+=3){c=parseInt(h.substring(i,i+3),16);ret+=b64map.charAt(c>>6)+b64map.charAt(c&63);}if(i+1==h.length){c=parseInt(h.substring(i,i+1),16);ret+=b64map.charAt(c<<2);}else if(i+2==h.length){c=parseInt(h.substring(i,i+2),16);ret+=b64map.charAt(c>>2)+b64map.charAt((c&3)<<4);}while((ret.length&3)>0){ret+=b64pad;}return ret;}function b64tohex(s){var ret=\"\";var i;var k=0;var slop=0;for(i=0;i<s.length;++i){if(s.charAt(i)==b64pad){break;}var v=b64map.indexOf(s.charAt(i));if(v<0){continue;}if(k==0){ret+=int2char(v>>2);slop=v&3;k=1;}else if(k==1){ret+=int2char((slop<<2)|(v>>4));slop=v&0xf;k=2;}else if(k==2){ret+=int2char(slop);ret+=int2char(v>>2);slop=v&3;k=3;}else{ret+=int2char((slop<<2)|(v>>4));ret+=int2char(v&0xf);k=0;}}if(k==1){ret+=int2char(slop<<2);}return ret;}var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||({__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;})||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p];};return extendStatics(d,b);};function __extends(d,b){extendStatics(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());}var decoder;var Hex={decode:function(a){var i;if(decoder===undefined){var hex=\"0123456789ABCDEF\";var ignore=\" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";decoder={};for(i=0;i<16;++i){decoder[hex.charAt(i)]=i;}hex=hex.toLowerCase();for(i=10;i<16;++i){decoder[hex.charAt(i)]=i;}for(i=0;i<ignore.length;++i){decoder[ignore.charAt(i)]=-1;}}var out=[];var bits=0;var char_count=0;for(i=0;i<a.length;++i){var c=a.charAt(i);if(c==\"=\"){break;}c=decoder[c];if(c==-1){continue;}if(c===undefined){throw new Error(\"Illegal character at offset \"+i);}bits|=c;if(++char_count>=2){out[out.length]=bits;bits=0;char_count=0;}else{bits<<=4;}}if(char_count){throw new Error(\"Hex encoding incomplete: 4 bits missing\");}return out;}};var decoder$1;var Base64={decode:function(a){var i;if(decoder$1===undefined){var b64=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var ignore=\"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";decoder$1=Object.create(null);for(i=0;i<64;++i){decoder$1[b64.charAt(i)]=i;}for(i=0;i<ignore.length;++i){decoder$1[ignore.charAt(i)]=-1;}}var out=[];var bits=0;var char_count=0;for(i=0;i<a.length;++i){var c=a.charAt(i);if(c==\"=\"){break;}c=decoder$1[c];if(c==-1){continue;}if(c===undefined){throw new Error(\"Illegal character at offset \"+i);}bits|=c;if(++char_count>=4){out[out.length]=(bits>>16);out[out.length]=(bits>>8)&0xFF;out[out.length]=bits&0xFF;bits=0;char_count=0;}else{bits<<=6;}}switch(char_count){case 1:throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");case 2:out[out.length]=(bits>>10);break;case 3:out[out.length]=(bits>>16);out[out.length]=(bits>>8)&0xFF;break;}return out;},re:/-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,unarmor:function(a){var m=Base64.re.exec(a);if(m){if(m[1]){a=m[1];}else if(m[2]){a=m[2];}else{throw new Error(\"RegExp out of sync\");}}return Base64.decode(a);}};var max=10000000000000;var Int10=(function(){function Int10(value){this.buf=[+value||0];}Int10.prototype.mulAdd=function(m,c){var b=this.buf;var l=b.length;var i;var t;for(i=0;i<l;++i){t=b[i]*m+c;if(t<max){c=0;}else{c=0|(t/max);t-=c*max;}b[i]=t;}if(c>0){b[i]=c;}};Int10.prototype.sub=function(c){var b=this.buf;var l=b.length;var i;var t;for(i=0;i<l;++i){t=b[i]-c;if(t<0){t+=max;c=1;}else{c=0;}b[i]=t;}while(b[b.length-1]===0){b.pop();}};Int10.prototype.toString=function(base){if((base||10)!=10){throw new Error(\"only base 10 is supported\");}var b=this.buf;var s=b[b.length-1].toString();for(var i=b.length-2;i>=0;--i){s+=(max+b[i]).toString().substring(1);}return s;};Int10.prototype.valueOf=function(){var b=this.buf;var v=0;for(var i=b.length-1;i>=0;--i){v=v*max+b[i];}return v;};Int10.prototype.simplify=function(){var b=this.buf;return(b.length==1)?b[0]:this;};return Int10;}());var ellipsis=\"\\u2026\";var reTimeS=/^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;var reTimeL=/^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;function stringCut(str,len){if(str.length>len){str=str.substring(0,len)+ellipsis;}return str;}var Stream=(function(){function Stream(enc,pos){this.hexDigits=\"0123456789ABCDEF\";if(enc instanceof Stream){this.enc=enc.enc;this.pos=enc.pos;}else{this.enc=enc;this.pos=pos;}}Stream.prototype.get=function(pos){if(pos===undefined){pos=this.pos++;}if(pos>=this.enc.length){throw new Error(\"Requesting byte offset \"+pos+\" on a stream of length \"+this.enc.length);}return(\"string\"===typeof this.enc)?this.enc.charCodeAt(pos):this.enc[pos];};Stream.prototype.hexByte=function(b){return this.hexDigits.charAt((b>>4)&0xF)+this.hexDigits.charAt(b&0xF);};Stream.prototype.hexDump=function(start,end,raw){var s=\"\";for(var i=start;i<end;++i){s+=this.hexByte(this.get(i));if(raw!==true){switch(i&0xF){case 0x7:s+=\"  \";break;case 0xF:s+=\"\\n\";break;default:s+=\" \";}}}return s;};Stream.prototype.isASCII=function(start,end){for(var i=start;i<end;++i){var c=this.get(i);if(c<32||c>176){return false;}}return true;};Stream.prototype.parseStringISO=function(start,end){var s=\"\";for(var i=start;i<end;++i){s+=String.fromCharCode(this.get(i));}return s;};Stream.prototype.parseStringUTF=function(start,end){var s=\"\";for(var i=start;i<end;){var c=this.get(i++);if(c<128){s+=String.fromCharCode(c);}else if((c>191)&&(c<224)){s+=String.fromCharCode(((c&0x1F)<<6)|(this.get(i++)&0x3F));}else{s+=String.fromCharCode(((c&0x0F)<<12)|((this.get(i++)&0x3F)<<6)|(this.get(i++)&0x3F));}}return s;};Stream.prototype.parseStringBMP=function(start,end){var str=\"\";var hi;var lo;for(var i=start;i<end;){hi=this.get(i++);lo=this.get(i++);str+=String.fromCharCode((hi<<8)|lo);}return str;};Stream.prototype.parseTime=function(start,end,shortYear){var s=this.parseStringISO(start,end);var m=(shortYear?reTimeS:reTimeL).exec(s);if(!m){return\"Unrecognized time: \"+s;}if(shortYear){m[1]=+m[1];m[1]+=(+m[1]<70)?2000:1900;}s=m[1]+\"-\"+m[2]+\"-\"+m[3]+\" \"+m[4];if(m[5]){s+=\":\"+m[5];if(m[6]){s+=\":\"+m[6];if(m[7]){s+=\".\"+m[7];}}}if(m[8]){s+=\" UTC\";if(m[8]!=\"Z\"){s+=m[8];if(m[9]){s+=\":\"+m[9];}}}return s;};Stream.prototype.parseInteger=function(start,end){var v=this.get(start);var neg=(v>127);var pad=neg?255:0;var len;var s=\"\";while(v==pad&&++start<end){v=this.get(start);}len=end-start;if(len===0){return neg?-1:0;}if(len>4){s=v;len<<=3;while(((+s^pad)&0x80)==0){s=+s<<1;--len;}s=\"(\"+len+\" bit)\\n\";}if(neg){v=v-256;}var n=new Int10(v);for(var i=start+1;i<end;++i){n.mulAdd(256,this.get(i));}return s+n.toString();};Stream.prototype.parseBitString=function(start,end,maxLength){var unusedBit=this.get(start);var lenBit=((end-start-1)<<3)-unusedBit;var intro=\"(\"+lenBit+\" bit)\\n\";var s=\"\";for(var i=start+1;i<end;++i){var b=this.get(i);var skip=(i==end-1)?unusedBit:0;for(var j=7;j>=skip;--j){s+=(b>>j)&1?\"1\":\"0\";}if(s.length>maxLength){return intro+stringCut(s,maxLength);}}return intro+s;};Stream.prototype.parseOctetString=function(start,end,maxLength){if(this.isASCII(start,end)){return stringCut(this.parseStringISO(start,end),maxLength);}var len=end-start;var s=\"(\"+len+\" byte)\\n\";maxLength/=2;if(len>maxLength){end=start+maxLength;}for(var i=start;i<end;++i){s+=this.hexByte(this.get(i));}if(len>maxLength){s+=ellipsis;}return s;};Stream.prototype.parseOID=function(start,end,maxLength){var s=\"\";var n=new Int10();var bits=0;for(var i=start;i<end;++i){var v=this.get(i);n.mulAdd(128,v&0x7F);bits+=7;if(!(v&0x80)){if(s===\"\"){n=n.simplify();if(n instanceof Int10){n.sub(80);s=\"2.\"+n.toString();}else{var m=n<80?n<40?0:1:2;s=m+\".\"+(n-m*40);}}else{s+=\".\"+n.toString();}if(s.length>maxLength){return stringCut(s,maxLength);}n=new Int10();bits=0;}}if(bits>0){s+=\".incomplete\";}return s;};return Stream;}());var ASN1=(function(){function ASN1(stream,header,length,tag,sub){if(!(tag instanceof ASN1Tag)){throw new Error(\"Invalid tag value.\");}this.stream=stream;this.header=header;this.length=length;this.tag=tag;this.sub=sub;}ASN1.prototype.typeName=function(){switch(this.tag.tagClass){case 0:switch(this.tag.tagNumber){case 0x00:return\"EOC\";case 0x01:return\"BOOLEAN\";case 0x02:return\"INTEGER\";case 0x03:return\"BIT_STRING\";case 0x04:return\"OCTET_STRING\";case 0x05:return\"NULL\";case 0x06:return\"OBJECT_IDENTIFIER\";case 0x07:return\"ObjectDescriptor\";case 0x08:return\"EXTERNAL\";case 0x09:return\"REAL\";case 0x0A:return\"ENUMERATED\";case 0x0B:return\"EMBEDDED_PDV\";case 0x0C:return\"UTF8String\";case 0x10:return\"SEQUENCE\";case 0x11:return\"SET\";case 0x12:return\"NumericString\";case 0x13:return\"PrintableString\";case 0x14:return\"TeletexString\";case 0x15:return\"VideotexString\";case 0x16:return\"IA5String\";case 0x17:return\"UTCTime\";case 0x18:return\"GeneralizedTime\";case 0x19:return\"GraphicString\";case 0x1A:return\"VisibleString\";case 0x1B:return\"GeneralString\";case 0x1C:return\"UniversalString\";case 0x1E:return\"BMPString\";}return\"Universal_\"+this.tag.tagNumber.toString();case 1:return\"Application_\"+this.tag.tagNumber.toString();case 2:return\"[\"+this.tag.tagNumber.toString()+\"]\";case 3:return\"Private_\"+this.tag.tagNumber.toString();}};ASN1.prototype.content=function(maxLength){if(this.tag===undefined){return null;}if(maxLength===undefined){maxLength=Infinity;}var content=this.posContent();var len=Math.abs(this.length);if(!this.tag.isUniversal()){if(this.sub!==null){return\"(\"+this.sub.length+\" elem)\";}return this.stream.parseOctetString(content,content+len,maxLength);}switch(this.tag.tagNumber){case 0x01:return(this.stream.get(content)===0)?\"false\":\"true\";case 0x02:return this.stream.parseInteger(content,content+len);case 0x03:return this.sub?\"(\"+this.sub.length+\" elem)\":this.stream.parseBitString(content,content+len,maxLength);case 0x04:return this.sub?\"(\"+this.sub.length+\" elem)\":this.stream.parseOctetString(content,content+len,maxLength);case 0x06:return this.stream.parseOID(content,content+len,maxLength);case 0x10:case 0x11:if(this.sub!==null){return\"(\"+this.sub.length+\" elem)\";}else{return\"(no elem)\";}case 0x0C:return stringCut(this.stream.parseStringUTF(content,content+len),maxLength);case 0x12:case 0x13:case 0x14:case 0x15:case 0x16:case 0x1A:return stringCut(this.stream.parseStringISO(content,content+len),maxLength);case 0x1E:return stringCut(this.stream.parseStringBMP(content,content+len),maxLength);case 0x17:case 0x18:return this.stream.parseTime(content,content+len,(this.tag.tagNumber==0x17));}return null;};ASN1.prototype.toString=function(){return this.typeName()+\"@\"+this.stream.pos+\"[header:\"+this.header+\",length:\"+this.length+\",sub:\"+((this.sub===null)?\"null\":this.sub.length)+\"]\";};ASN1.prototype.toPrettyString=function(indent){if(indent===undefined){indent=\"\";}var s=indent+this.typeName()+\" @\"+this.stream.pos;if(this.length>=0){s+=\"+\";}s+=this.length;if(this.tag.tagConstructed){s+=\" (constructed)\";}else if((this.tag.isUniversal()&&((this.tag.tagNumber==0x03)||(this.tag.tagNumber==0x04)))&&(this.sub!==null)){s+=\" (encapsulates)\";}s+=\"\\n\";if(this.sub!==null){indent+=\"  \";for(var i=0,max=this.sub.length;i<max;++i){s+=this.sub[i].toPrettyString(indent);}}return s;};ASN1.prototype.posStart=function(){return this.stream.pos;};ASN1.prototype.posContent=function(){return this.stream.pos+this.header;};ASN1.prototype.posEnd=function(){return this.stream.pos+this.header+Math.abs(this.length);};ASN1.prototype.toHexString=function(){return this.stream.hexDump(this.posStart(),this.posEnd(),true);};ASN1.decodeLength=function(stream){var buf=stream.get();var len=buf&0x7F;if(len==buf){return len;}if(len>6){throw new Error(\"Length over 48 bits not supported at position \"+(stream.pos-1));}if(len===0){return null;}buf=0;for(var i=0;i<len;++i){buf=(buf*256)+stream.get();}return buf;};ASN1.prototype.getHexStringValue=function(){var hexString=this.toHexString();var offset=this.header*2;var length=this.length*2;return hexString.substr(offset,length);};ASN1.decode=function(str){var stream;if(!(str instanceof Stream)){stream=new Stream(str,0);}else{stream=str;}var streamStart=new Stream(stream);var tag=new ASN1Tag(stream);var len=ASN1.decodeLength(stream);var start=stream.pos;var header=start-streamStart.pos;var sub=null;var getSub=function(){var ret=[];if(len!==null){var end=start+len;while(stream.pos<end){ret[ret.length]=ASN1.decode(stream);}if(stream.pos!=end){throw new Error(\"Content size is not correct for container starting at offset \"+start);}}else{try{for(;;){var s=ASN1.decode(stream);if(s.tag.isEOC()){break;}ret[ret.length]=s;}len=start-stream.pos;}catch(e){throw new Error(\"Exception while decoding undefined length content: \"+e);}}return ret;};if(tag.tagConstructed){sub=getSub();}else if(tag.isUniversal()&&((tag.tagNumber==0x03)||(tag.tagNumber==0x04))){try{if(tag.tagNumber==0x03){if(stream.get()!=0){throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");}}sub=getSub();for(var i=0;i<sub.length;++i){if(sub[i].tag.isEOC()){throw new Error(\"EOC is not supposed to be actual content.\");}}}catch(e){sub=null;}}if(sub===null){if(len===null){throw new Error(\"We can't skip over an invalid tag with undefined length at offset \"+start);}stream.pos=start+Math.abs(len);}return new ASN1(streamStart,header,len,tag,sub);};return ASN1;}());var ASN1Tag=(function(){function ASN1Tag(stream){var buf=stream.get();this.tagClass=buf>>6;this.tagConstructed=((buf&0x20)!==0);this.tagNumber=buf&0x1F;if(this.tagNumber==0x1F){var n=new Int10();do{buf=stream.get();n.mulAdd(128,buf&0x7F);}while(buf&0x80);this.tagNumber=n.simplify();}}ASN1Tag.prototype.isUniversal=function(){return this.tagClass===0x00;};ASN1Tag.prototype.isEOC=function(){return this.tagClass===0x00&&this.tagNumber===0x00;};return ASN1Tag;}());var dbits;var canary=0xdeadbeefcafe;var j_lm=((canary&0xffffff)==0xefcafe);var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];var BigInteger=(function(){function BigInteger(a,b,c){if(a!=null){if(\"number\"==typeof a){this.fromNumber(a,b,c);}else if(b==null&&\"string\"!=typeof a){this.fromString(a,256);}else{this.fromString(a,b);}}}BigInteger.prototype.toString=function(b){if(this.s<0){return\"-\"+this.negate().toString(b);}var k;if(b==16){k=4;}else if(b==8){k=3;}else if(b==2){k=1;}else if(b==32){k=5;}else if(b==4){k=2;}else{return this.toRadix(b);}var km=(1<<k)-1;var d;var m=false;var r=\"\";var i=this.t;var p=this.DB-(i*this.DB)%k;if(i-->0){if(p<this.DB&&(d=this[i]>>p)>0){m=true;r=int2char(d);}while(i>=0){if(p<k){d=(this[i]&((1<<p)-1))<<(k-p);d|=this[--i]>>(p+=this.DB-k);}else{d=(this[i]>>(p-=k))&km;if(p<=0){p+=this.DB;--i;}}if(d>0){m=true;}if(m){r+=int2char(d);}}}return m?r:\"0\";};BigInteger.prototype.negate=function(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r;};BigInteger.prototype.abs=function(){return(this.s<0)?this.negate():this;};BigInteger.prototype.compareTo=function(a){var r=this.s-a.s;if(r!=0){return r;}var i=this.t;r=i-a.t;if(r!=0){return(this.s<0)?-r:r;}while(--i>=0){if((r=this[i]-a[i])!=0){return r;}}return 0;};BigInteger.prototype.bitLength=function(){if(this.t<=0){return 0;}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));};BigInteger.prototype.mod=function(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0){a.subTo(r,r);}return r;};BigInteger.prototype.modPowInt=function(e,m){var z;if(e<256||m.isEven()){z=new Classic(m);}else{z=new Montgomery(m);}return this.exp(e,z);};BigInteger.prototype.clone=function(){var r=nbi();this.copyTo(r);return r;};BigInteger.prototype.intValue=function(){if(this.s<0){if(this.t==1){return this[0]-this.DV;}else if(this.t==0){return-1;}}else if(this.t==1){return this[0];}else if(this.t==0){return 0;}return((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];};BigInteger.prototype.byteValue=function(){return(this.t==0)?this.s:(this[0]<<24)>>24;};BigInteger.prototype.shortValue=function(){return(this.t==0)?this.s:(this[0]<<16)>>16;};BigInteger.prototype.signum=function(){if(this.s<0){return-1;}else if(this.t<=0||(this.t==1&&this[0]<=0)){return 0;}else{return 1;}};BigInteger.prototype.toByteArray=function(){var i=this.t;var r=[];r[0]=this.s;var p=this.DB-(i*this.DB)%8;var d;var k=0;if(i-->0){if(p<this.DB&&(d=this[i]>>p)!=(this.s&this.DM)>>p){r[k++]=d|(this.s<<(this.DB-p));}while(i>=0){if(p<8){d=(this[i]&((1<<p)-1))<<(8-p);d|=this[--i]>>(p+=this.DB-8);}else{d=(this[i]>>(p-=8))&0xff;if(p<=0){p+=this.DB;--i;}}if((d&0x80)!=0){d|=-256;}if(k==0&&(this.s&0x80)!=(d&0x80)){++k;}if(k>0||d!=this.s){r[k++]=d;}}}return r;};BigInteger.prototype.equals=function(a){return(this.compareTo(a)==0);};BigInteger.prototype.min=function(a){return(this.compareTo(a)<0)?this:a;};BigInteger.prototype.max=function(a){return(this.compareTo(a)>0)?this:a;};BigInteger.prototype.and=function(a){var r=nbi();this.bitwiseTo(a,op_and,r);return r;};BigInteger.prototype.or=function(a){var r=nbi();this.bitwiseTo(a,op_or,r);return r;};BigInteger.prototype.xor=function(a){var r=nbi();this.bitwiseTo(a,op_xor,r);return r;};BigInteger.prototype.andNot=function(a){var r=nbi();this.bitwiseTo(a,op_andnot,r);return r;};BigInteger.prototype.not=function(){var r=nbi();for(var i=0;i<this.t;++i){r[i]=this.DM&~this[i];}r.t=this.t;r.s=~this.s;return r;};BigInteger.prototype.shiftLeft=function(n){var r=nbi();if(n<0){this.rShiftTo(-n,r);}else{this.lShiftTo(n,r);}return r;};BigInteger.prototype.shiftRight=function(n){var r=nbi();if(n<0){this.lShiftTo(-n,r);}else{this.rShiftTo(n,r);}return r;};BigInteger.prototype.getLowestSetBit=function(){for(var i=0;i<this.t;++i){if(this[i]!=0){return i*this.DB+lbit(this[i]);}}if(this.s<0){return this.t*this.DB;}return-1;};BigInteger.prototype.bitCount=function(){var r=0;var x=this.s&this.DM;for(var i=0;i<this.t;++i){r+=cbit(this[i]^x);}return r;};BigInteger.prototype.testBit=function(n){var j=Math.floor(n/this.DB);if(j>=this.t){return(this.s!=0);}return((this[j]&(1<<(n%this.DB)))!=0);};BigInteger.prototype.setBit=function(n){return this.changeBit(n,op_or);};BigInteger.prototype.clearBit=function(n){return this.changeBit(n,op_andnot);};BigInteger.prototype.flipBit=function(n){return this.changeBit(n,op_xor);};BigInteger.prototype.add=function(a){var r=nbi();this.addTo(a,r);return r;};BigInteger.prototype.subtract=function(a){var r=nbi();this.subTo(a,r);return r;};BigInteger.prototype.multiply=function(a){var r=nbi();this.multiplyTo(a,r);return r;};BigInteger.prototype.divide=function(a){var r=nbi();this.divRemTo(a,r,null);return r;};BigInteger.prototype.remainder=function(a){var r=nbi();this.divRemTo(a,null,r);return r;};BigInteger.prototype.divideAndRemainder=function(a){var q=nbi();var r=nbi();this.divRemTo(a,q,r);return[q,r];};BigInteger.prototype.modPow=function(e,m){var i=e.bitLength();var k;var r=nbv(1);var z;if(i<=0){return r;}else if(i<18){k=1;}else if(i<48){k=3;}else if(i<144){k=4;}else if(i<768){k=5;}else{k=6;}if(i<8){z=new Classic(m);}else if(m.isEven()){z=new Barrett(m);}else{z=new Montgomery(m);}var g=[];var n=3;var k1=k-1;var km=(1<<k)-1;g[1]=z.convert(this);if(k>1){var g2=nbi();z.sqrTo(g[1],g2);while(n<=km){g[n]=nbi();z.mulTo(g2,g[n-2],g[n]);n+=2;}}var j=e.t-1;var w;var is1=true;var r2=nbi();var t;i=nbits(e[j])-1;while(j>=0){if(i>=k1){w=(e[j]>>(i-k1))&km;}else{w=(e[j]&((1<<(i+1))-1))<<(k1-i);if(j>0){w|=e[j-1]>>(this.DB+i-k1);}}n=k;while((w&1)==0){w>>=1;--n;}if((i-=n)<0){i+=this.DB;--j;}if(is1){g[w].copyTo(r);is1=false;}else{while(n>1){z.sqrTo(r,r2);z.sqrTo(r2,r);n-=2;}if(n>0){z.sqrTo(r,r2);}else{t=r;r=r2;r2=t;}z.mulTo(r2,g[w],r);}while(j>=0&&(e[j]&(1<<i))==0){z.sqrTo(r,r2);t=r;r=r2;r2=t;if(--i<0){i=this.DB-1;--j;}}}return z.revert(r);};BigInteger.prototype.modInverse=function(m){var ac=m.isEven();if((this.isEven()&&ac)||m.signum()==0){return BigInteger.ZERO;}var u=m.clone();var v=this.clone();var a=nbv(1);var b=nbv(0);var c=nbv(0);var d=nbv(1);while(u.signum()!=0){while(u.isEven()){u.rShiftTo(1,u);if(ac){if(!a.isEven()||!b.isEven()){a.addTo(this,a);b.subTo(m,b);}a.rShiftTo(1,a);}else if(!b.isEven()){b.subTo(m,b);}b.rShiftTo(1,b);}while(v.isEven()){v.rShiftTo(1,v);if(ac){if(!c.isEven()||!d.isEven()){c.addTo(this,c);d.subTo(m,d);}c.rShiftTo(1,c);}else if(!d.isEven()){d.subTo(m,d);}d.rShiftTo(1,d);}if(u.compareTo(v)>=0){u.subTo(v,u);if(ac){a.subTo(c,a);}b.subTo(d,b);}else{v.subTo(u,v);if(ac){c.subTo(a,c);}d.subTo(b,d);}}if(v.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO;}if(d.compareTo(m)>=0){return d.subtract(m);}if(d.signum()<0){d.addTo(m,d);}else{return d;}if(d.signum()<0){return d.add(m);}else{return d;}};BigInteger.prototype.pow=function(e){return this.exp(e,new NullExp());};BigInteger.prototype.gcd=function(a){var x=(this.s<0)?this.negate():this.clone();var y=(a.s<0)?a.negate():a.clone();if(x.compareTo(y)<0){var t=x;x=y;y=t;}var i=x.getLowestSetBit();var g=y.getLowestSetBit();if(g<0){return x;}if(i<g){g=i;}if(g>0){x.rShiftTo(g,x);y.rShiftTo(g,y);}while(x.signum()>0){if((i=x.getLowestSetBit())>0){x.rShiftTo(i,x);}if((i=y.getLowestSetBit())>0){y.rShiftTo(i,y);}if(x.compareTo(y)>=0){x.subTo(y,x);x.rShiftTo(1,x);}else{y.subTo(x,y);y.rShiftTo(1,y);}}if(g>0){y.lShiftTo(g,y);}return y;};BigInteger.prototype.isProbablePrime=function(t){var i;var x=this.abs();if(x.t==1&&x[0]<=lowprimes[lowprimes.length-1]){for(i=0;i<lowprimes.length;++i){if(x[0]==lowprimes[i]){return true;}}return false;}if(x.isEven()){return false;}i=1;while(i<lowprimes.length){var m=lowprimes[i];var j=i+1;while(j<lowprimes.length&&m<lplim){m*=lowprimes[j++];}m=x.modInt(m);while(i<j){if(m%lowprimes[i++]==0){return false;}}}return x.millerRabin(t);};BigInteger.prototype.copyTo=function(r){for(var i=this.t-1;i>=0;--i){r[i]=this[i];}r.t=this.t;r.s=this.s;};BigInteger.prototype.fromInt=function(x){this.t=1;this.s=(x<0)?-1:0;if(x>0){this[0]=x;}else if(x<-1){this[0]=x+this.DV;}else{this.t=0;}};BigInteger.prototype.fromString=function(s,b){var k;if(b==16){k=4;}else if(b==8){k=3;}else if(b==256){k=8;}else if(b==2){k=1;}else if(b==32){k=5;}else if(b==4){k=2;}else{this.fromRadix(s,b);return;}this.t=0;this.s=0;var i=s.length;var mi=false;var sh=0;while(--i>=0){var x=(k==8)?(+s[i])&0xff:intAt(s,i);if(x<0){if(s.charAt(i)==\"-\"){mi=true;}continue;}mi=false;if(sh==0){this[this.t++]=x;}else if(sh+k>this.DB){this[this.t-1]|=(x&((1<<(this.DB-sh))-1))<<sh;this[this.t++]=(x>>(this.DB-sh));}else{this[this.t-1]|=x<<sh;}sh+=k;if(sh>=this.DB){sh-=this.DB;}}if(k==8&&((+s[0])&0x80)!=0){this.s=-1;if(sh>0){this[this.t-1]|=((1<<(this.DB-sh))-1)<<sh;}}this.clamp();if(mi){BigInteger.ZERO.subTo(this,this);}};BigInteger.prototype.clamp=function(){var c=this.s&this.DM;while(this.t>0&&this[this.t-1]==c){--this.t;}};BigInteger.prototype.dlShiftTo=function(n,r){var i;for(i=this.t-1;i>=0;--i){r[i+n]=this[i];}for(i=n-1;i>=0;--i){r[i]=0;}r.t=this.t+n;r.s=this.s;};BigInteger.prototype.drShiftTo=function(n,r){for(var i=n;i<this.t;++i){r[i-n]=this[i];}r.t=Math.max(this.t-n,0);r.s=this.s;};BigInteger.prototype.lShiftTo=function(n,r){var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<cbs)-1;var ds=Math.floor(n/this.DB);var c=(this.s<<bs)&this.DM;for(var i=this.t-1;i>=0;--i){r[i+ds+1]=(this[i]>>cbs)|c;c=(this[i]&bm)<<bs;}for(var i=ds-1;i>=0;--i){r[i]=0;}r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp();};BigInteger.prototype.rShiftTo=function(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return;}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<bs)-1;r[0]=this[ds]>>bs;for(var i=ds+1;i<this.t;++i){r[i-ds-1]|=(this[i]&bm)<<cbs;r[i-ds]=this[i]>>bs;}if(bs>0){r[this.t-ds-1]|=(this.s&bm)<<cbs;}r.t=this.t-ds;r.clamp();};BigInteger.prototype.subTo=function(a,r){var i=0;var c=0;var m=Math.min(a.t,this.t);while(i<m){c+=this[i]-a[i];r[i++]=c&this.DM;c>>=this.DB;}if(a.t<this.t){c-=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB;}c+=this.s;}else{c+=this.s;while(i<a.t){c-=a[i];r[i++]=c&this.DM;c>>=this.DB;}c-=a.s;}r.s=(c<0)?-1:0;if(c<-1){r[i++]=this.DV+c;}else if(c>0){r[i++]=c;}r.t=i;r.clamp();};BigInteger.prototype.multiplyTo=function(a,r){var x=this.abs();var y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0){r[i]=0;}for(i=0;i<y.t;++i){r[i+x.t]=x.am(0,y[i],r,i,0,x.t);}r.s=0;r.clamp();if(this.s!=a.s){BigInteger.ZERO.subTo(r,r);}};BigInteger.prototype.squareTo=function(r){var x=this.abs();var i=r.t=2*x.t;while(--i>=0){r[i]=0;}for(i=0;i<x.t-1;++i){var c=x.am(i,x[i],r,2*i,0,1);if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1))>=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1;}}if(r.t>0){r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);}r.s=0;r.clamp();};BigInteger.prototype.divRemTo=function(m,q,r){var pm=m.abs();if(pm.t<=0){return;}var pt=this.abs();if(pt.t<pm.t){if(q!=null){q.fromInt(0);}if(r!=null){this.copyTo(r);}return;}if(r==null){r=nbi();}var y=nbi();var ts=this.s;var ms=m.s;var nsh=this.DB-nbits(pm[pm.t-1]);if(nsh>0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r);}else{pm.copyTo(y);pt.copyTo(r);}var ys=y.t;var y0=y[ys-1];if(y0==0){return;}var yt=y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);var d1=this.FV/yt;var d2=(1<<this.F1)/yt;var e=1<<this.F2;var i=r.t;var j=i-ys;var t=(q==null)?nbi():q;y.dlShiftTo(j,t);if(r.compareTo(t)>=0){r[r.t++]=1;r.subTo(t,r);}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t<ys){y[y.t++]=0;}while(--j>=0){var qd=(r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))<qd){y.dlShiftTo(j,t);r.subTo(t,r);while(r[i]<--qd){r.subTo(t,r);}}}if(q!=null){r.drShiftTo(ys,q);if(ts!=ms){BigInteger.ZERO.subTo(q,q);}}r.t=ys;r.clamp();if(nsh>0){r.rShiftTo(nsh,r);}if(ts<0){BigInteger.ZERO.subTo(r,r);}};BigInteger.prototype.invDigit=function(){if(this.t<1){return 0;}var x=this[0];if((x&1)==0){return 0;}var y=x&3;y=(y*(2-(x&0xf)*y))&0xf;y=(y*(2-(x&0xff)*y))&0xff;y=(y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;y=(y*(2-x*y%this.DV))%this.DV;return(y>0)?this.DV-y:-y;};BigInteger.prototype.isEven=function(){return((this.t>0)?(this[0]&1):this.s)==0;};BigInteger.prototype.exp=function(e,z){if(e>0xffffffff||e<1){return BigInteger.ONE;}var r=nbi();var r2=nbi();var g=z.convert(this);var i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&(1<<i))>0){z.mulTo(r2,g,r);}else{var t=r;r=r2;r2=t;}}return z.revert(r);};BigInteger.prototype.chunkSize=function(r){return Math.floor(Math.LN2*this.DB/Math.log(r));};BigInteger.prototype.toRadix=function(b){if(b==null){b=10;}if(this.signum()==0||b<2||b>36){return\"0\";}var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a);var y=nbi();var z=nbi();var r=\"\";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z);}return z.intValue().toString(b)+r;};BigInteger.prototype.fromRadix=function(s,b){this.fromInt(0);if(b==null){b=10;}var cs=this.chunkSize(b);var d=Math.pow(b,cs);var mi=false;var j=0;var w=0;for(var i=0;i<s.length;++i){var x=intAt(s,i);if(x<0){if(s.charAt(i)==\"-\"&&this.signum()==0){mi=true;}continue;}w=b*w+x;if(++j>=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0;}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0);}if(mi){BigInteger.ZERO.subTo(this,this);}};BigInteger.prototype.fromNumber=function(a,b,c){if(\"number\"==typeof b){if(a<2){this.fromInt(1);}else{this.fromNumber(a,c);if(!this.testBit(a-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);}if(this.isEven()){this.dAddOffset(1,0);}while(!this.isProbablePrime(b)){this.dAddOffset(2,0);if(this.bitLength()>a){this.subTo(BigInteger.ONE.shiftLeft(a-1),this);}}}}else{var x=[];var t=a&7;x.length=(a>>3)+1;b.nextBytes(x);if(t>0){x[0]&=((1<<t)-1);}else{x[0]=0;}this.fromString(x,256);}};BigInteger.prototype.bitwiseTo=function(a,op,r){var i;var f;var m=Math.min(a.t,this.t);for(i=0;i<m;++i){r[i]=op(this[i],a[i]);}if(a.t<this.t){f=a.s&this.DM;for(i=m;i<this.t;++i){r[i]=op(this[i],f);}r.t=this.t;}else{f=this.s&this.DM;for(i=m;i<a.t;++i){r[i]=op(f,a[i]);}r.t=a.t;}r.s=op(this.s,a.s);r.clamp();};BigInteger.prototype.changeBit=function(n,op){var r=BigInteger.ONE.shiftLeft(n);this.bitwiseTo(r,op,r);return r;};BigInteger.prototype.addTo=function(a,r){var i=0;var c=0;var m=Math.min(a.t,this.t);while(i<m){c+=this[i]+a[i];r[i++]=c&this.DM;c>>=this.DB;}if(a.t<this.t){c+=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB;}c+=this.s;}else{c+=this.s;while(i<a.t){c+=a[i];r[i++]=c&this.DM;c>>=this.DB;}c+=a.s;}r.s=(c<0)?-1:0;if(c>0){r[i++]=c;}else if(c<-1){r[i++]=this.DV+c;}r.t=i;r.clamp();};BigInteger.prototype.dMultiply=function(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp();};BigInteger.prototype.dAddOffset=function(n,w){if(n==0){return;}while(this.t<=w){this[this.t++]=0;}this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t){this[this.t++]=0;}++this[w];}};BigInteger.prototype.multiplyLowerTo=function(a,n,r){var i=Math.min(this.t+a.t,n);r.s=0;r.t=i;while(i>0){r[--i]=0;}for(var j=r.t-this.t;i<j;++i){r[i+this.t]=this.am(0,a[i],r,i,0,this.t);}for(var j=Math.min(a.t,n);i<j;++i){this.am(0,a[i],r,i,0,n-i);}r.clamp();};BigInteger.prototype.multiplyUpperTo=function(a,n,r){--n;var i=r.t=this.t+a.t-n;r.s=0;while(--i>=0){r[i]=0;}for(i=Math.max(n-this.t,0);i<a.t;++i){r[this.t+i-n]=this.am(n-i,a[i],r,0,0,this.t+i-n);}r.clamp();r.drShiftTo(1,r);};BigInteger.prototype.modInt=function(n){if(n<=0){return 0;}var d=this.DV%n;var r=(this.s<0)?n-1:0;if(this.t>0){if(d==0){r=this[0]%n;}else{for(var i=this.t-1;i>=0;--i){r=(d*r+this[i])%n;}}}return r;};BigInteger.prototype.millerRabin=function(t){var n1=this.subtract(BigInteger.ONE);var k=n1.getLowestSetBit();if(k<=0){return false;}var r=n1.shiftRight(k);t=(t+1)>>1;if(t>lowprimes.length){t=lowprimes.length;}var a=nbi();for(var i=0;i<t;++i){a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var y=a.modPow(r,this);if(y.compareTo(BigInteger.ONE)!=0&&y.compareTo(n1)!=0){var j=1;while(j++<k&&y.compareTo(n1)!=0){y=y.modPowInt(2,this);if(y.compareTo(BigInteger.ONE)==0){return false;}}if(y.compareTo(n1)!=0){return false;}}}return true;};BigInteger.prototype.square=function(){var r=nbi();this.squareTo(r);return r;};BigInteger.prototype.gcda=function(a,callback){var x=(this.s<0)?this.negate():this.clone();var y=(a.s<0)?a.negate():a.clone();if(x.compareTo(y)<0){var t=x;x=y;y=t;}var i=x.getLowestSetBit();var g=y.getLowestSetBit();if(g<0){callback(x);return;}if(i<g){g=i;}if(g>0){x.rShiftTo(g,x);y.rShiftTo(g,y);}var gcda1=function(){if((i=x.getLowestSetBit())>0){x.rShiftTo(i,x);}if((i=y.getLowestSetBit())>0){y.rShiftTo(i,y);}if(x.compareTo(y)>=0){x.subTo(y,x);x.rShiftTo(1,x);}else{y.subTo(x,y);y.rShiftTo(1,y);}if(!(x.signum()>0)){if(g>0){y.lShiftTo(g,y);}setTimeout(function(){callback(y);},0);}else{setTimeout(gcda1,0);}};setTimeout(gcda1,10);};BigInteger.prototype.fromNumberAsync=function(a,b,c,callback){if(\"number\"==typeof b){if(a<2){this.fromInt(1);}else{this.fromNumber(a,c);if(!this.testBit(a-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);}if(this.isEven()){this.dAddOffset(1,0);}var bnp_1=this;var bnpfn1_1=function(){bnp_1.dAddOffset(2,0);if(bnp_1.bitLength()>a){bnp_1.subTo(BigInteger.ONE.shiftLeft(a-1),bnp_1);}if(bnp_1.isProbablePrime(b)){setTimeout(function(){callback();},0);}else{setTimeout(bnpfn1_1,0);}};setTimeout(bnpfn1_1,0);}}else{var x=[];var t=a&7;x.length=(a>>3)+1;b.nextBytes(x);if(t>0){x[0]&=((1<<t)-1);}else{x[0]=0;}this.fromString(x,256);}};return BigInteger;}());var NullExp=(function(){function NullExp(){}NullExp.prototype.convert=function(x){return x;};NullExp.prototype.revert=function(x){return x;};NullExp.prototype.mulTo=function(x,y,r){x.multiplyTo(y,r);};NullExp.prototype.sqrTo=function(x,r){x.squareTo(r);};return NullExp;}());var Classic=(function(){function Classic(m){this.m=m;}Classic.prototype.convert=function(x){if(x.s<0||x.compareTo(this.m)>=0){return x.mod(this.m);}else{return x;}};Classic.prototype.revert=function(x){return x;};Classic.prototype.reduce=function(x){x.divRemTo(this.m,null,x);};Classic.prototype.mulTo=function(x,y,r){x.multiplyTo(y,r);this.reduce(r);};Classic.prototype.sqrTo=function(x,r){x.squareTo(r);this.reduce(r);};return Classic;}());var Montgomery=(function(){function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&0x7fff;this.mph=this.mp>>15;this.um=(1<<(m.DB-15))-1;this.mt2=2*m.t;}Montgomery.prototype.convert=function(x){var r=nbi();x.abs().dlShiftTo(this.m.t,r);r.divRemTo(this.m,null,r);if(x.s<0&&r.compareTo(BigInteger.ZERO)>0){this.m.subTo(r,r);}return r;};Montgomery.prototype.revert=function(x){var r=nbi();x.copyTo(r);this.reduce(r);return r;};Montgomery.prototype.reduce=function(x){while(x.t<=this.mt2){x[x.t++]=0;}for(var i=0;i<this.m.t;++i){var j=x[i]&0x7fff;var u0=(j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++;}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0){x.subTo(this.m,x);}};Montgomery.prototype.mulTo=function(x,y,r){x.multiplyTo(y,r);this.reduce(r);};Montgomery.prototype.sqrTo=function(x,r){x.squareTo(r);this.reduce(r);};return Montgomery;}());var Barrett=(function(){function Barrett(m){this.m=m;this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*m.t,this.r2);this.mu=this.r2.divide(m);}Barrett.prototype.convert=function(x){if(x.s<0||x.t>2*this.m.t){return x.mod(this.m);}else if(x.compareTo(this.m)<0){return x;}else{var r=nbi();x.copyTo(r);this.reduce(r);return r;}};Barrett.prototype.revert=function(x){return x;};Barrett.prototype.reduce=function(x){x.drShiftTo(this.m.t-1,this.r2);if(x.t>this.m.t+1){x.t=this.m.t+1;x.clamp();}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(x.compareTo(this.r2)<0){x.dAddOffset(1,this.m.t+1);}x.subTo(this.r2,x);while(x.compareTo(this.m)>=0){x.subTo(this.m,x);}};Barrett.prototype.mulTo=function(x,y,r){x.multiplyTo(y,r);this.reduce(r);};Barrett.prototype.sqrTo=function(x,r){x.squareTo(r);this.reduce(r);};return Barrett;}());function nbi(){return new BigInteger(null);}function parseBigInt(str,r){return new BigInteger(str,r);}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/0x4000000);w[j++]=v&0x3ffffff;}return c;}function am2(i,x,w,j,c,n){var xl=x&0x7fff;var xh=x>>15;while(--n>=0){var l=this[i]&0x7fff;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&0x3fffffff;}return c;}function am3(i,x,w,j,c,n){var xl=x&0x3fff;var xh=x>>14;while(--n>=0){var l=this[i]&0x3fff;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&0x3fff)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&0xfffffff;}return c;}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30;}else if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26;}else{BigInteger.prototype.am=am3;dbits=28;}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<<dbits)-1);BigInteger.prototype.DV=(1<<dbits);var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RC=[];var rr;var vv;rr=\"0\".charCodeAt(0);for(vv=0;vv<=9;++vv){BI_RC[rr++]=vv;}rr=\"a\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv;}rr=\"A\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv;}function intAt(s,i){var c=BI_RC[s.charCodeAt(i)];return(c==null)?-1:c;}function nbv(i){var r=nbi();r.fromInt(i);return r;}function nbits(x){var r=1;var t;if((t=x>>>16)!=0){x=t;r+=16;}if((t=x>>8)!=0){x=t;r+=8;}if((t=x>>4)!=0){x=t;r+=4;}if((t=x>>2)!=0){x=t;r+=2;}if((t=x>>1)!=0){x=t;r+=1;}return r;}BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);var Arcfour=(function(){function Arcfour(){this.i=0;this.j=0;this.S=[];}Arcfour.prototype.init=function(key){var i;var j;var t;for(i=0;i<256;++i){this.S[i]=i;}j=0;for(i=0;i<256;++i){j=(j+this.S[i]+key[i%key.length])&255;t=this.S[i];this.S[i]=this.S[j];this.S[j]=t;}this.i=0;this.j=0;};Arcfour.prototype.next=function(){var t;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;t=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=t;return this.S[(t+this.S[this.i])&255];};return Arcfour;}());function prng_newstate(){return new Arcfour();}var rng_psize=256;var rng_state;var rng_pool=null;var rng_pptr;if(rng_pool==null){rng_pool=[];rng_pptr=0;var t=void 0;if(window.crypto&&window.crypto.getRandomValues){var z=new Uint32Array(256);window.crypto.getRandomValues(z);for(t=0;t<z.length;++t){rng_pool[rng_pptr++]=z[t]&255;}}var onMouseMoveListener_1=function(ev){this.count=this.count||0;if(this.count>=256||rng_pptr>=rng_psize){if(window.removeEventListener){window.removeEventListener(\"mousemove\",onMouseMoveListener_1,false);}else if(window.detachEvent){window.detachEvent(\"onmousemove\",onMouseMoveListener_1);}return;}try{var mouseCoordinates=ev.x+ev.y;rng_pool[rng_pptr++]=mouseCoordinates&255;this.count+=1;}catch(e){}};if(window.addEventListener){window.addEventListener(\"mousemove\",onMouseMoveListener_1,false);}else if(window.attachEvent){window.attachEvent(\"onmousemove\",onMouseMoveListener_1);}}function rng_get_byte(){if(rng_state==null){rng_state=prng_newstate();while(rng_pptr<rng_psize){var random=Math.floor(65536*Math.random());rng_pool[rng_pptr++]=random&255;}rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr){rng_pool[rng_pptr]=0;}rng_pptr=0;}return rng_state.next();}var SecureRandom=(function(){function SecureRandom(){}SecureRandom.prototype.nextBytes=function(ba){for(var i=0;i<ba.length;++i){ba[i]=rng_get_byte();}};return SecureRandom;}());function pkcs1pad1(s,n){if(n<s.length+22){console.error(\"Message too long for RSA\");return null;}var len=n-s.length-6;var filler=\"\";for(var f=0;f<len;f+=2){filler+=\"ff\";}var m=\"0001\"+filler+\"00\"+s;return parseBigInt(m,16);}function pkcs1pad2(s,n){if(n<s.length+11){console.error(\"Message too long for RSA\");return null;}var ba=[];var i=s.length-1;while(i>=0&&n>0){var c=s.charCodeAt(i--);if(c<128){ba[--n]=c;}else if((c>127)&&(c<2048)){ba[--n]=(c&63)|128;ba[--n]=(c>>6)|192;}else{ba[--n]=(c&63)|128;ba[--n]=((c>>6)&63)|128;ba[--n]=(c>>12)|224;}}ba[--n]=0;var rng=new SecureRandom();var x=[];while(n>2){x[0]=0;while(x[0]==0){rng.nextBytes(x);}ba[--n]=x[0];}ba[--n]=2;ba[--n]=0;return new BigInteger(ba);}var RSAKey=(function(){function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null;}RSAKey.prototype.doPublic=function(x){return x.modPowInt(this.e,this.n);};RSAKey.prototype.doPrivate=function(x){if(this.p==null||this.q==null){return x.modPow(this.d,this.n);}var xp=x.mod(this.p).modPow(this.dmp1,this.p);var xq=x.mod(this.q).modPow(this.dmq1,this.q);while(xp.compareTo(xq)<0){xp=xp.add(this.p);}return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);};RSAKey.prototype.setPublic=function(N,E){if(N!=null&&E!=null&&N.length>0&&E.length>0){this.n=parseBigInt(N,16);this.e=parseInt(E,16);}else{console.error(\"Invalid RSA public key\");}};RSAKey.prototype.encrypt=function(text){var m=pkcs1pad2(text,(this.n.bitLength()+7)>>3);if(m==null){return null;}var c=this.doPublic(m);if(c==null){return null;}var h=c.toString(16);if((h.length&1)==0){return h;}else{return\"0\"+h;}};RSAKey.prototype.setPrivate=function(N,E,D){if(N!=null&&E!=null&&N.length>0&&E.length>0){this.n=parseBigInt(N,16);this.e=parseInt(E,16);this.d=parseBigInt(D,16);}else{console.error(\"Invalid RSA private key\");}};RSAKey.prototype.setPrivateEx=function(N,E,D,P,Q,DP,DQ,C){if(N!=null&&E!=null&&N.length>0&&E.length>0){this.n=parseBigInt(N,16);this.e=parseInt(E,16);this.d=parseBigInt(D,16);this.p=parseBigInt(P,16);this.q=parseBigInt(Q,16);this.dmp1=parseBigInt(DP,16);this.dmq1=parseBigInt(DQ,16);this.coeff=parseBigInt(C,16);}else{console.error(\"Invalid RSA private key\");}};RSAKey.prototype.generate=function(B,E){var rng=new SecureRandom();var qs=B>>1;this.e=parseInt(E,16);var ee=new BigInteger(E,16);for(;;){for(;;){this.p=new BigInteger(B-qs,1,rng);if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break;}}for(;;){this.q=new BigInteger(qs,1,rng);if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break;}}if(this.p.compareTo(this.q)<=0){var t=this.p;this.p=this.q;this.q=t;}var p1=this.p.subtract(BigInteger.ONE);var q1=this.q.subtract(BigInteger.ONE);var phi=p1.multiply(q1);if(phi.gcd(ee).compareTo(BigInteger.ONE)==0){this.n=this.p.multiply(this.q);this.d=ee.modInverse(phi);this.dmp1=this.d.mod(p1);this.dmq1=this.d.mod(q1);this.coeff=this.q.modInverse(this.p);break;}}};RSAKey.prototype.decrypt=function(ctext){var c=parseBigInt(ctext,16);var m=this.doPrivate(c);if(m==null){return null;}return pkcs1unpad2(m,(this.n.bitLength()+7)>>3);};RSAKey.prototype.generateAsync=function(B,E,callback){var rng=new SecureRandom();var qs=B>>1;this.e=parseInt(E,16);var ee=new BigInteger(E,16);var rsa=this;var loop1=function(){var loop4=function(){if(rsa.p.compareTo(rsa.q)<=0){var t=rsa.p;rsa.p=rsa.q;rsa.q=t;}var p1=rsa.p.subtract(BigInteger.ONE);var q1=rsa.q.subtract(BigInteger.ONE);var phi=p1.multiply(q1);if(phi.gcd(ee).compareTo(BigInteger.ONE)==0){rsa.n=rsa.p.multiply(rsa.q);rsa.d=ee.modInverse(phi);rsa.dmp1=rsa.d.mod(p1);rsa.dmq1=rsa.d.mod(q1);rsa.coeff=rsa.q.modInverse(rsa.p);setTimeout(function(){callback();},0);}else{setTimeout(loop1,0);}};var loop3=function(){rsa.q=nbi();rsa.q.fromNumberAsync(qs,1,rng,function(){rsa.q.subtract(BigInteger.ONE).gcda(ee,function(r){if(r.compareTo(BigInteger.ONE)==0&&rsa.q.isProbablePrime(10)){setTimeout(loop4,0);}else{setTimeout(loop3,0);}});});};var loop2=function(){rsa.p=nbi();rsa.p.fromNumberAsync(B-qs,1,rng,function(){rsa.p.subtract(BigInteger.ONE).gcda(ee,function(r){if(r.compareTo(BigInteger.ONE)==0&&rsa.p.isProbablePrime(10)){setTimeout(loop3,0);}else{setTimeout(loop2,0);}});});};setTimeout(loop2,0);};setTimeout(loop1,0);};RSAKey.prototype.sign=function(text,digestMethod,digestName){var header=getDigestHeader(digestName);var digest=header+digestMethod(text).toString();var m=pkcs1pad1(digest,this.n.bitLength()/4);if(m==null){return null;}var c=this.doPrivate(m);if(c==null){return null;}var h=c.toString(16);if((h.length&1)==0){return h;}else{return\"0\"+h;}};RSAKey.prototype.verify=function(text,signature,digestMethod){var c=parseBigInt(signature,16);var m=this.doPublic(c);if(m==null){return null;}var unpadded=m.toString(16).replace(/^1f+00/,\"\");var digest=removeDigestHeader(unpadded);return digest==digestMethod(text).toString();};return RSAKey;}());function pkcs1unpad2(d,n){var b=d.toByteArray();var i=0;while(i<b.length&&b[i]==0){++i;}if(b.length-i!=n-1||b[i]!=2){return null;}++i;while(b[i]!=0){if(++i>=b.length){return null;}}var ret=\"\";while(++i<b.length){var c=b[i]&255;if(c<128){ret+=String.fromCharCode(c);}else if((c>191)&&(c<224)){ret+=String.fromCharCode(((c&31)<<6)|(b[i+1]&63));++i;}else{ret+=String.fromCharCode(((c&15)<<12)|((b[i+1]&63)<<6)|(b[i+2]&63));i+=2;}}return ret;}function getDigestHeader(name){return DIGEST_HEADERS[name]||\"\";}function removeDigestHeader(str){for(var name_1 in DIGEST_HEADERS){if(DIGEST_HEADERS.hasOwnProperty(name_1)){var header=DIGEST_HEADERS[name_1];var len=header.length;if(str.substr(0,len)==header){return str.substr(len);}}}return str;}var YAHOO={};YAHOO.lang={extend:function(subc,superc,overrides){if(!superc||!subc){throw new Error(\"YAHOO.lang.extend failed, please check that \"+\"all dependencies are included.\");}var F=function(){};F.prototype=superc.prototype;subc.prototype=new F();subc.prototype.constructor=subc;subc.superclass=superc.prototype;if(superc.prototype.constructor==Object.prototype.constructor){superc.prototype.constructor=superc;}if(overrides){var i;for(i in overrides){subc.prototype[i]=overrides[i];}var _IEEnumFix=function(){},ADD=[\"toString\",\"valueOf\"];try{if(/MSIE/.test(navigator.userAgent)){_IEEnumFix=function(r,s){for(i=0;i<ADD.length;i=i+1){var fname=ADD[i],f=s[fname];if(typeof f==='function'&&f!=Object.prototype[fname]){r[fname]=f;}}};}}catch(ex){}_IEEnumFix(subc.prototype,overrides);}}};var KJUR={};if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1)KJUR.asn1={};KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(i){var h=i.toString(16);if((h.length%2)==1)h='0'+h;return h;};this.bigIntToMinTwosComplementsHex=function(bigIntegerValue){var h=bigIntegerValue.toString(16);if(h.substr(0,1)!='-'){if(h.length%2==1){h='0'+h;}else{if(!h.match(/^[0-7]/)){h='00'+h;}}}else{var hPos=h.substr(1);var xorLen=hPos.length;if(xorLen%2==1){xorLen+=1;}else{if(!h.match(/^[0-7]/)){xorLen+=2;}}var hMask='';for(var i=0;i<xorLen;i++){hMask+='f';}var biMask=new BigInteger(hMask,16);var biNeg=biMask.xor(bigIntegerValue).add(BigInteger.ONE);h=biNeg.toString(16).replace(/^-/,'');}return h;};this.getPEMStringFromHex=function(dataHex,pemHeader){return hextopem(dataHex,pemHeader);};this.newObject=function(param){var _KJUR=KJUR,_KJUR_asn1=_KJUR.asn1,_DERBoolean=_KJUR_asn1.DERBoolean,_DERInteger=_KJUR_asn1.DERInteger,_DERBitString=_KJUR_asn1.DERBitString,_DEROctetString=_KJUR_asn1.DEROctetString,_DERNull=_KJUR_asn1.DERNull,_DERObjectIdentifier=_KJUR_asn1.DERObjectIdentifier,_DEREnumerated=_KJUR_asn1.DEREnumerated,_DERUTF8String=_KJUR_asn1.DERUTF8String,_DERNumericString=_KJUR_asn1.DERNumericString,_DERPrintableString=_KJUR_asn1.DERPrintableString,_DERTeletexString=_KJUR_asn1.DERTeletexString,_DERIA5String=_KJUR_asn1.DERIA5String,_DERUTCTime=_KJUR_asn1.DERUTCTime,_DERGeneralizedTime=_KJUR_asn1.DERGeneralizedTime,_DERSequence=_KJUR_asn1.DERSequence,_DERSet=_KJUR_asn1.DERSet,_DERTaggedObject=_KJUR_asn1.DERTaggedObject,_newObject=_KJUR_asn1.ASN1Util.newObject;var keys=Object.keys(param);if(keys.length!=1)throw\"key of param shall be only one.\";var key=keys[0];if(\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\"+key+\":\")==-1)throw\"undefined key: \"+key;if(key==\"bool\")return new _DERBoolean(param[key]);if(key==\"int\")return new _DERInteger(param[key]);if(key==\"bitstr\")return new _DERBitString(param[key]);if(key==\"octstr\")return new _DEROctetString(param[key]);if(key==\"null\")return new _DERNull(param[key]);if(key==\"oid\")return new _DERObjectIdentifier(param[key]);if(key==\"enum\")return new _DEREnumerated(param[key]);if(key==\"utf8str\")return new _DERUTF8String(param[key]);if(key==\"numstr\")return new _DERNumericString(param[key]);if(key==\"prnstr\")return new _DERPrintableString(param[key]);if(key==\"telstr\")return new _DERTeletexString(param[key]);if(key==\"ia5str\")return new _DERIA5String(param[key]);if(key==\"utctime\")return new _DERUTCTime(param[key]);if(key==\"gentime\")return new _DERGeneralizedTime(param[key]);if(key==\"seq\"){var paramList=param[key];var a=[];for(var i=0;i<paramList.length;i++){var asn1Obj=_newObject(paramList[i]);a.push(asn1Obj);}return new _DERSequence({'array':a});}if(key==\"set\"){var paramList=param[key];var a=[];for(var i=0;i<paramList.length;i++){var asn1Obj=_newObject(paramList[i]);a.push(asn1Obj);}return new _DERSet({'array':a});}if(key==\"tag\"){var tagParam=param[key];if(Object.prototype.toString.call(tagParam)==='[object Array]'&&tagParam.length==3){var obj=_newObject(tagParam[2]);return new _DERTaggedObject({tag:tagParam[0],explicit:tagParam[1],obj:obj});}else{var newParam={};if(tagParam.explicit!==undefined)newParam.explicit=tagParam.explicit;if(tagParam.tag!==undefined)newParam.tag=tagParam.tag;if(tagParam.obj===undefined)throw\"obj shall be specified for 'tag'.\";newParam.obj=_newObject(tagParam.obj);return new _DERTaggedObject(newParam);}}};this.jsonToASN1HEX=function(param){var asn1Obj=this.newObject(param);return asn1Obj.getEncodedHex();};};KJUR.asn1.ASN1Util.oidHexToInt=function(hex){var s=\"\";var i01=parseInt(hex.substr(0,2),16);var i0=Math.floor(i01/40);var i1=i01%40;var s=i0+\".\"+i1;var binbuf=\"\";for(var i=2;i<hex.length;i+=2){var value=parseInt(hex.substr(i,2),16);var bin=(\"00000000\"+value.toString(2)).slice(-8);binbuf=binbuf+bin.substr(1,7);if(bin.substr(0,1)==\"0\"){var bi=new BigInteger(binbuf,2);s=s+\".\"+bi.toString(10);binbuf=\"\";}}return s;};KJUR.asn1.ASN1Util.oidIntToHex=function(oidString){var itox=function(i){var h=i.toString(16);if(h.length==1)h='0'+h;return h;};var roidtox=function(roid){var h='';var bi=new BigInteger(roid,10);var b=bi.toString(2);var padLen=7-b.length%7;if(padLen==7)padLen=0;var bPad='';for(var i=0;i<padLen;i++)bPad+='0';b=bPad+b;for(var i=0;i<b.length-1;i+=7){var b8=b.substr(i,7);if(i!=b.length-7)b8='1'+b8;h+=itox(parseInt(b8,2));}return h;};if(!oidString.match(/^[0-9.]+$/)){throw\"malformed oid string: \"+oidString;}var h='';var a=oidString.split('.');var i0=parseInt(a[0])*40+parseInt(a[1]);h+=itox(i0);a.splice(0,2);for(var i=0;i<a.length;i++){h+=roidtox(a[i]);}return h;};KJUR.asn1.ASN1Object=function(){var hV='';this.getLengthHexFromValue=function(){if(typeof this.hV==\"undefined\"||this.hV==null){throw\"this.hV is null or undefined.\";}if(this.hV.length%2==1){throw\"value hex must be even length: n=\"+hV.length+\",v=\"+this.hV;}var n=this.hV.length/2;var hN=n.toString(16);if(hN.length%2==1){hN=\"0\"+hN;}if(n<128){return hN;}else{var hNlen=hN.length/2;if(hNlen>15){throw\"ASN.1 length too long to represent by 8x: n = \"+n.toString(16);}var head=128+hNlen;return head.toString(16)+hN;}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false;}return this.hTLV;};this.getValueHex=function(){this.getEncodedHex();return this.hV;};this.getFreshValueHex=function(){return'';};};KJUR.asn1.DERAbstractString=function(params){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s;};this.setString=function(newS){this.hTLV=null;this.isModified=true;this.s=newS;this.hV=stohex(this.s);};this.setStringHex=function(newHexString){this.hTLV=null;this.isModified=true;this.s=null;this.hV=newHexString;};this.getFreshValueHex=function(){return this.hV;};if(typeof params!=\"undefined\"){if(typeof params==\"string\"){this.setString(params);}else if(typeof params['str']!=\"undefined\"){this.setString(params['str']);}else if(typeof params['hex']!=\"undefined\"){this.setStringHex(params['hex']);}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(params){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(d){utc=d.getTime()+(d.getTimezoneOffset()*60000);var utcDate=new Date(utc);return utcDate;};this.formatDate=function(dateObject,type,withMillis){var pad=this.zeroPadding;var d=this.localDateToUTC(dateObject);var year=String(d.getFullYear());if(type=='utc')year=year.substr(2,2);var month=pad(String(d.getMonth()+1),2);var day=pad(String(d.getDate()),2);var hour=pad(String(d.getHours()),2);var min=pad(String(d.getMinutes()),2);var sec=pad(String(d.getSeconds()),2);var s=year+month+day+hour+min+sec;if(withMillis===true){var millis=d.getMilliseconds();if(millis!=0){var sMillis=pad(String(millis),3);sMillis=sMillis.replace(/[0]+$/,\"\");s=s+\".\"+sMillis;}}return s+\"Z\";};this.zeroPadding=function(s,len){if(s.length>=len)return s;return new Array(len-s.length+1).join('0')+s;};this.getString=function(){return this.s;};this.setString=function(newS){this.hTLV=null;this.isModified=true;this.s=newS;this.hV=stohex(newS);};this.setByDateValue=function(year,month,day,hour,min,sec){var dateObject=new Date(Date.UTC(year,month-1,day,hour,min,sec,0));this.setByDate(dateObject);};this.getFreshValueHex=function(){return this.hV;};};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(params){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(asn1ObjectArray){this.hTLV=null;this.isModified=true;this.asn1Array=asn1ObjectArray;};this.appendASN1Object=function(asn1Object){this.hTLV=null;this.isModified=true;this.asn1Array.push(asn1Object);};this.asn1Array=new Array();if(typeof params!=\"undefined\"){if(typeof params['array']!=\"undefined\"){this.asn1Array=params['array'];}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";this.hTLV=\"0101ff\";};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(params){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.setByBigInteger=function(bigIntegerValue){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);};this.setByInteger=function(intValue){var bi=new BigInteger(String(intValue),10);this.setByBigInteger(bi);};this.setValueHex=function(newHexString){this.hV=newHexString;};this.getFreshValueHex=function(){return this.hV;};if(typeof params!=\"undefined\"){if(typeof params['bigint']!=\"undefined\"){this.setByBigInteger(params['bigint']);}else if(typeof params['int']!=\"undefined\"){this.setByInteger(params['int']);}else if(typeof params==\"number\"){this.setByInteger(params);}else if(typeof params['hex']!=\"undefined\"){this.setValueHex(params['hex']);}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(params){if(params!==undefined&&typeof params.obj!==\"undefined\"){var o=KJUR.asn1.ASN1Util.newObject(params.obj);params.hex=\"00\"+o.getEncodedHex();}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(newHexStringIncludingUnusedBits){this.hTLV=null;this.isModified=true;this.hV=newHexStringIncludingUnusedBits;};this.setUnusedBitsAndHexValue=function(unusedBits,hValue){if(unusedBits<0||7<unusedBits){throw\"unused bits shall be from 0 to 7: u = \"+unusedBits;}var hUnusedBits=\"0\"+unusedBits;this.hTLV=null;this.isModified=true;this.hV=hUnusedBits+hValue;};this.setByBinaryString=function(binaryString){binaryString=binaryString.replace(/0+$/,'');var unusedBits=8-binaryString.length%8;if(unusedBits==8)unusedBits=0;for(var i=0;i<=unusedBits;i++){binaryString+='0';}var h='';for(var i=0;i<binaryString.length-1;i+=8){var b=binaryString.substr(i,8);var x=parseInt(b,2).toString(16);if(x.length==1)x='0'+x;h+=x;}this.hTLV=null;this.isModified=true;this.hV='0'+unusedBits+h;};this.setByBooleanArray=function(booleanArray){var s='';for(var i=0;i<booleanArray.length;i++){if(booleanArray[i]==true){s+='1';}else{s+='0';}}this.setByBinaryString(s);};this.newFalseArray=function(nLength){var a=new Array(nLength);for(var i=0;i<nLength;i++){a[i]=false;}return a;};this.getFreshValueHex=function(){return this.hV;};if(typeof params!=\"undefined\"){if(typeof params==\"string\"&&params.toLowerCase().match(/^[0-9a-f]+$/)){this.setHexValueIncludingUnusedBits(params);}else if(typeof params['hex']!=\"undefined\"){this.setHexValueIncludingUnusedBits(params['hex']);}else if(typeof params['bin']!=\"undefined\"){this.setByBinaryString(params['bin']);}else if(typeof params['array']!=\"undefined\"){this.setByBooleanArray(params['array']);}}};YAHOO.lang.extend(KJUR.asn1.DERBitString,KJUR.asn1.ASN1Object);KJUR.asn1.DEROctetString=function(params){if(params!==undefined&&typeof params.obj!==\"undefined\"){var o=KJUR.asn1.ASN1Util.newObject(params.obj);params.hex=o.getEncodedHex();}KJUR.asn1.DEROctetString.superclass.constructor.call(this,params);this.hT=\"04\";};YAHOO.lang.extend(KJUR.asn1.DEROctetString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNull=function(){KJUR.asn1.DERNull.superclass.constructor.call(this);this.hT=\"05\";this.hTLV=\"0500\";};YAHOO.lang.extend(KJUR.asn1.DERNull,KJUR.asn1.ASN1Object);KJUR.asn1.DERObjectIdentifier=function(params){var itox=function(i){var h=i.toString(16);if(h.length==1)h='0'+h;return h;};var roidtox=function(roid){var h='';var bi=new BigInteger(roid,10);var b=bi.toString(2);var padLen=7-b.length%7;if(padLen==7)padLen=0;var bPad='';for(var i=0;i<padLen;i++)bPad+='0';b=bPad+b;for(var i=0;i<b.length-1;i+=7){var b8=b.substr(i,7);if(i!=b.length-7)b8='1'+b8;h+=itox(parseInt(b8,2));}return h;};KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);this.hT=\"06\";this.setValueHex=function(newHexString){this.hTLV=null;this.isModified=true;this.s=null;this.hV=newHexString;};this.setValueOidString=function(oidString){if(!oidString.match(/^[0-9.]+$/)){throw\"malformed oid string: \"+oidString;}var h='';var a=oidString.split('.');var i0=parseInt(a[0])*40+parseInt(a[1]);h+=itox(i0);a.splice(0,2);for(var i=0;i<a.length;i++){h+=roidtox(a[i]);}this.hTLV=null;this.isModified=true;this.s=null;this.hV=h;};this.setValueName=function(oidName){var oid=KJUR.asn1.x509.OID.name2oid(oidName);if(oid!==''){this.setValueOidString(oid);}else{throw\"DERObjectIdentifier oidName undefined: \"+oidName;}};this.getFreshValueHex=function(){return this.hV;};if(params!==undefined){if(typeof params===\"string\"){if(params.match(/^[0-2].[0-9.]+$/)){this.setValueOidString(params);}else{this.setValueName(params);}}else if(params.oid!==undefined){this.setValueOidString(params.oid);}else if(params.hex!==undefined){this.setValueHex(params.hex);}else if(params.name!==undefined){this.setValueName(params.name);}}};YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.DEREnumerated=function(params){KJUR.asn1.DEREnumerated.superclass.constructor.call(this);this.hT=\"0a\";this.setByBigInteger=function(bigIntegerValue){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);};this.setByInteger=function(intValue){var bi=new BigInteger(String(intValue),10);this.setByBigInteger(bi);};this.setValueHex=function(newHexString){this.hV=newHexString;};this.getFreshValueHex=function(){return this.hV;};if(typeof params!=\"undefined\"){if(typeof params['int']!=\"undefined\"){this.setByInteger(params['int']);}else if(typeof params==\"number\"){this.setByInteger(params);}else if(typeof params['hex']!=\"undefined\"){this.setValueHex(params['hex']);}}};YAHOO.lang.extend(KJUR.asn1.DEREnumerated,KJUR.asn1.ASN1Object);KJUR.asn1.DERUTF8String=function(params){KJUR.asn1.DERUTF8String.superclass.constructor.call(this,params);this.hT=\"0c\";};YAHOO.lang.extend(KJUR.asn1.DERUTF8String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNumericString=function(params){KJUR.asn1.DERNumericString.superclass.constructor.call(this,params);this.hT=\"12\";};YAHOO.lang.extend(KJUR.asn1.DERNumericString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERPrintableString=function(params){KJUR.asn1.DERPrintableString.superclass.constructor.call(this,params);this.hT=\"13\";};YAHOO.lang.extend(KJUR.asn1.DERPrintableString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERTeletexString=function(params){KJUR.asn1.DERTeletexString.superclass.constructor.call(this,params);this.hT=\"14\";};YAHOO.lang.extend(KJUR.asn1.DERTeletexString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERIA5String=function(params){KJUR.asn1.DERIA5String.superclass.constructor.call(this,params);this.hT=\"16\";};YAHOO.lang.extend(KJUR.asn1.DERIA5String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERUTCTime=function(params){KJUR.asn1.DERUTCTime.superclass.constructor.call(this,params);this.hT=\"17\";this.setByDate=function(dateObject){this.hTLV=null;this.isModified=true;this.date=dateObject;this.s=this.formatDate(this.date,'utc');this.hV=stohex(this.s);};this.getFreshValueHex=function(){if(typeof this.date==\"undefined\"&&typeof this.s==\"undefined\"){this.date=new Date();this.s=this.formatDate(this.date,'utc');this.hV=stohex(this.s);}return this.hV;};if(params!==undefined){if(params.str!==undefined){this.setString(params.str);}else if(typeof params==\"string\"&&params.match(/^[0-9]{12}Z$/)){this.setString(params);}else if(params.hex!==undefined){this.setStringHex(params.hex);}else if(params.date!==undefined){this.setByDate(params.date);}}};YAHOO.lang.extend(KJUR.asn1.DERUTCTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERGeneralizedTime=function(params){KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this,params);this.hT=\"18\";this.withMillis=false;this.setByDate=function(dateObject){this.hTLV=null;this.isModified=true;this.date=dateObject;this.s=this.formatDate(this.date,'gen',this.withMillis);this.hV=stohex(this.s);};this.getFreshValueHex=function(){if(this.date===undefined&&this.s===undefined){this.date=new Date();this.s=this.formatDate(this.date,'gen',this.withMillis);this.hV=stohex(this.s);}return this.hV;};if(params!==undefined){if(params.str!==undefined){this.setString(params.str);}else if(typeof params==\"string\"&&params.match(/^[0-9]{14}Z$/)){this.setString(params);}else if(params.hex!==undefined){this.setStringHex(params.hex);}else if(params.date!==undefined){this.setByDate(params.date);}if(params.millis===true){this.withMillis=true;}}};YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERSequence=function(params){KJUR.asn1.DERSequence.superclass.constructor.call(this,params);this.hT=\"30\";this.getFreshValueHex=function(){var h='';for(var i=0;i<this.asn1Array.length;i++){var asn1Obj=this.asn1Array[i];h+=asn1Obj.getEncodedHex();}this.hV=h;return this.hV;};};YAHOO.lang.extend(KJUR.asn1.DERSequence,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERSet=function(params){KJUR.asn1.DERSet.superclass.constructor.call(this,params);this.hT=\"31\";this.sortFlag=true;this.getFreshValueHex=function(){var a=new Array();for(var i=0;i<this.asn1Array.length;i++){var asn1Obj=this.asn1Array[i];a.push(asn1Obj.getEncodedHex());}if(this.sortFlag==true)a.sort();this.hV=a.join('');return this.hV;};if(typeof params!=\"undefined\"){if(typeof params.sortflag!=\"undefined\"&&params.sortflag==false)this.sortFlag=false;}};YAHOO.lang.extend(KJUR.asn1.DERSet,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERTaggedObject=function(params){KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);this.hT=\"a0\";this.hV='';this.isExplicit=true;this.asn1Object=null;this.setASN1Object=function(isExplicitFlag,tagNoHex,asn1Object){this.hT=tagNoHex;this.isExplicit=isExplicitFlag;this.asn1Object=asn1Object;if(this.isExplicit){this.hV=this.asn1Object.getEncodedHex();this.hTLV=null;this.isModified=true;}else{this.hV=null;this.hTLV=asn1Object.getEncodedHex();this.hTLV=this.hTLV.replace(/^../,tagNoHex);this.isModified=false;}};this.getFreshValueHex=function(){return this.hV;};if(typeof params!=\"undefined\"){if(typeof params['tag']!=\"undefined\"){this.hT=params['tag'];}if(typeof params['explicit']!=\"undefined\"){this.isExplicit=params['explicit'];}if(typeof params['obj']!=\"undefined\"){this.asn1Object=params['obj'];this.setASN1Object(this.isExplicit,this.hT,this.asn1Object);}}};YAHOO.lang.extend(KJUR.asn1.DERTaggedObject,KJUR.asn1.ASN1Object);var JSEncryptRSAKey=(function(_super){__extends(JSEncryptRSAKey,_super);function JSEncryptRSAKey(key){var _this=_super.call(this)||this;if(key){if(typeof key===\"string\"){_this.parseKey(key);}else if(JSEncryptRSAKey.hasPrivateKeyProperty(key)||JSEncryptRSAKey.hasPublicKeyProperty(key)){_this.parsePropertiesFrom(key);}}return _this;}JSEncryptRSAKey.prototype.parseKey=function(pem){try{var modulus=0;var public_exponent=0;var reHex=/^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;var der=reHex.test(pem)?Hex.decode(pem):Base64.unarmor(pem);var asn1=ASN1.decode(der);if(asn1.sub.length===3){asn1=asn1.sub[2].sub[0];}if(asn1.sub.length===9){modulus=asn1.sub[1].getHexStringValue();this.n=parseBigInt(modulus,16);public_exponent=asn1.sub[2].getHexStringValue();this.e=parseInt(public_exponent,16);var private_exponent=asn1.sub[3].getHexStringValue();this.d=parseBigInt(private_exponent,16);var prime1=asn1.sub[4].getHexStringValue();this.p=parseBigInt(prime1,16);var prime2=asn1.sub[5].getHexStringValue();this.q=parseBigInt(prime2,16);var exponent1=asn1.sub[6].getHexStringValue();this.dmp1=parseBigInt(exponent1,16);var exponent2=asn1.sub[7].getHexStringValue();this.dmq1=parseBigInt(exponent2,16);var coefficient=asn1.sub[8].getHexStringValue();this.coeff=parseBigInt(coefficient,16);}else if(asn1.sub.length===2){var bit_string=asn1.sub[1];var sequence=bit_string.sub[0];modulus=sequence.sub[0].getHexStringValue();this.n=parseBigInt(modulus,16);public_exponent=sequence.sub[1].getHexStringValue();this.e=parseInt(public_exponent,16);}else{return false;}return true;}catch(ex){return false;}};JSEncryptRSAKey.prototype.getPrivateBaseKey=function(){var options={array:[new KJUR.asn1.DERInteger({int:0}),new KJUR.asn1.DERInteger({bigint:this.n}),new KJUR.asn1.DERInteger({int:this.e}),new KJUR.asn1.DERInteger({bigint:this.d}),new KJUR.asn1.DERInteger({bigint:this.p}),new KJUR.asn1.DERInteger({bigint:this.q}),new KJUR.asn1.DERInteger({bigint:this.dmp1}),new KJUR.asn1.DERInteger({bigint:this.dmq1}),new KJUR.asn1.DERInteger({bigint:this.coeff})]};var seq=new KJUR.asn1.DERSequence(options);return seq.getEncodedHex();};JSEncryptRSAKey.prototype.getPrivateBaseKeyB64=function(){return hex2b64(this.getPrivateBaseKey());};JSEncryptRSAKey.prototype.getPublicBaseKey=function(){var first_sequence=new KJUR.asn1.DERSequence({array:[new KJUR.asn1.DERObjectIdentifier({oid:\"1.2.840.113549.1.1.1\"}),new KJUR.asn1.DERNull()]});var second_sequence=new KJUR.asn1.DERSequence({array:[new KJUR.asn1.DERInteger({bigint:this.n}),new KJUR.asn1.DERInteger({int:this.e})]});var bit_string=new KJUR.asn1.DERBitString({hex:\"00\"+second_sequence.getEncodedHex()});var seq=new KJUR.asn1.DERSequence({array:[first_sequence,bit_string]});return seq.getEncodedHex();};JSEncryptRSAKey.prototype.getPublicBaseKeyB64=function(){return hex2b64(this.getPublicBaseKey());};JSEncryptRSAKey.wordwrap=function(str,width){width=width||64;if(!str){return str;}var regex=\"(.{1,\"+width+\"})( +|$\\n?)|(.{1,\"+width+\"})\";return str.match(RegExp(regex,\"g\")).join(\"\\n\");};JSEncryptRSAKey.prototype.getPrivateKey=function(){var key=\"-----BEGIN RSA PRIVATE KEY-----\\n\";key+=JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64())+\"\\n\";key+=\"-----END RSA PRIVATE KEY-----\";return key;};JSEncryptRSAKey.prototype.getPublicKey=function(){var key=\"-----BEGIN PUBLIC KEY-----\\n\";key+=JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64())+\"\\n\";key+=\"-----END PUBLIC KEY-----\";return key;};JSEncryptRSAKey.hasPublicKeyProperty=function(obj){obj=obj||{};return(obj.hasOwnProperty(\"n\")&&obj.hasOwnProperty(\"e\"));};JSEncryptRSAKey.hasPrivateKeyProperty=function(obj){obj=obj||{};return(obj.hasOwnProperty(\"n\")&&obj.hasOwnProperty(\"e\")&&obj.hasOwnProperty(\"d\")&&obj.hasOwnProperty(\"p\")&&obj.hasOwnProperty(\"q\")&&obj.hasOwnProperty(\"dmp1\")&&obj.hasOwnProperty(\"dmq1\")&&obj.hasOwnProperty(\"coeff\"));};JSEncryptRSAKey.prototype.parsePropertiesFrom=function(obj){this.n=obj.n;this.e=obj.e;if(obj.hasOwnProperty(\"d\")){this.d=obj.d;this.p=obj.p;this.q=obj.q;this.dmp1=obj.dmp1;this.dmq1=obj.dmq1;this.coeff=obj.coeff;}};return JSEncryptRSAKey;}(RSAKey));var JSEncrypt=(function(){function JSEncrypt(options){options=options||{};this.default_key_size=parseInt(options.default_key_size,10)||1024;this.default_public_exponent=options.default_public_exponent||\"010001\";this.log=options.log||false;this.key=null;}JSEncrypt.prototype.setKey=function(key){if(this.log&&this.key){console.warn(\"A key was already set, overriding existing.\");}this.key=new JSEncryptRSAKey(key);};JSEncrypt.prototype.setPrivateKey=function(privkey){this.setKey(privkey);};JSEncrypt.prototype.setPublicKey=function(pubkey){this.setKey(pubkey);};JSEncrypt.prototype.decrypt=function(str){try{return this.getKey().decrypt(b64tohex(str));}catch(ex){return false;}};JSEncrypt.prototype.encrypt=function(str){try{return hex2b64(this.getKey().encrypt(str));}catch(ex){return false;}};JSEncrypt.prototype.sign=function(str,digestMethod,digestName){try{return hex2b64(this.getKey().sign(str,digestMethod,digestName));}catch(ex){return false;}};JSEncrypt.prototype.verify=function(str,signature,digestMethod){try{return this.getKey().verify(str,b64tohex(signature),digestMethod);}catch(ex){return false;}};JSEncrypt.prototype.getKey=function(cb){if(!this.key){this.key=new JSEncryptRSAKey();if(cb&&{}.toString.call(cb)===\"[object Function]\"){this.key.generateAsync(this.default_key_size,this.default_public_exponent,cb);return;}this.key.generate(this.default_key_size,this.default_public_exponent);}return this.key;};JSEncrypt.prototype.getPrivateKey=function(){return this.getKey().getPrivateKey();};JSEncrypt.prototype.getPrivateKeyB64=function(){return this.getKey().getPrivateBaseKeyB64();};JSEncrypt.prototype.getPublicKey=function(){return this.getKey().getPublicKey();};JSEncrypt.prototype.getPublicKeyB64=function(){return this.getKey().getPublicBaseKeyB64();};JSEncrypt.version=\"3.0.0-rc.1\";return JSEncrypt;}());window.JSEncrypt=JSEncrypt;})));var encrypt=new JSEncrypt();encrypt.setPublicKey(enPublicKey);return encrypt.encrypt(enValue);}"
  },
  {
    "path": "sdk/易语言/ui/.idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n  <component name=\"JavaScriptSettings\">\r\n    <option name=\"languageLevel\" value=\"ES6\" />\r\n  </component>\r\n</project>"
  },
  {
    "path": "sdk/易语言/ui/.idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n  <component name=\"ProjectModuleManager\">\r\n    <modules>\r\n      <module fileurl=\"file://$PROJECT_DIR$/.idea/ui.iml\" filepath=\"$PROJECT_DIR$/.idea/ui.iml\" />\r\n    </modules>\r\n  </component>\r\n</project>"
  },
  {
    "path": "sdk/易语言/ui/.idea/ui.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<module type=\"WEB_MODULE\" version=\"4\">\r\n  <component name=\"NewModuleRootManager\">\r\n    <content url=\"file://$MODULE_DIR$\">\r\n      <excludeFolder url=\"file://$MODULE_DIR$/.tmp\" />\r\n      <excludeFolder url=\"file://$MODULE_DIR$/temp\" />\r\n      <excludeFolder url=\"file://$MODULE_DIR$/tmp\" />\r\n    </content>\r\n    <orderEntry type=\"inheritedJdk\" />\r\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\r\n  </component>\r\n</module>"
  },
  {
    "path": "sdk/易语言/ui/.idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"f90dca51-4c4f-4524-a522-3a199c91f4f2\" name=\"Default Changelist\" comment=\"\" />\n    <ignored path=\"$PROJECT_DIR$/.tmp/\" />\n    <ignored path=\"$PROJECT_DIR$/temp/\" />\n    <ignored path=\"$PROJECT_DIR$/tmp/\" />\n    <option name=\"EXCLUDED_CONVERTED_TO_IGNORED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"FUSProjectUsageTrigger\">\n    <session id=\"-1901318247\">\n      <usages-collector id=\"statistics.lifecycle.project\">\n        <counts>\n          <entry key=\"project.closed\" value=\"15\" />\n          <entry key=\"project.open.time.0\" value=\"7\" />\n          <entry key=\"project.open.time.1\" value=\"2\" />\n          <entry key=\"project.open.time.4\" value=\"2\" />\n          <entry key=\"project.open.time.5\" value=\"1\" />\n          <entry key=\"project.open.time.6\" value=\"3\" />\n          <entry key=\"project.opened\" value=\"15\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.extensions.open\">\n        <counts>\n          <entry key=\"css\" value=\"2\" />\n          <entry key=\"html\" value=\"9\" />\n          <entry key=\"jpg\" value=\"1\" />\n          <entry key=\"js\" value=\"17\" />\n          <entry key=\"png\" value=\"1\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.types.open\">\n        <counts>\n          <entry key=\"CSS\" value=\"2\" />\n          <entry key=\"HTML\" value=\"9\" />\n          <entry key=\"Image\" value=\"2\" />\n          <entry key=\"JavaScript\" value=\"17\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.extensions.edit\">\n        <counts>\n          <entry key=\"html\" value=\"3751\" />\n          <entry key=\"js\" value=\"613\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.types.edit\">\n        <counts>\n          <entry key=\"HTML\" value=\"3753\" />\n          <entry key=\"JavaScript\" value=\"611\" />\n        </counts>\n      </usages-collector>\n    </session>\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf SIDE_TABS_SIZE_LIMIT_KEY=\"300\">\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/update.html\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"7857\">\n              <caret line=\"291\" column=\"20\" selection-start-line=\"291\" selection-start-column=\"20\" selection-end-line=\"291\" selection-end-column=\"20\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/service.html\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"17763\">\n              <caret line=\"769\" column=\"11\" selection-start-line=\"769\" selection-start-column=\"11\" selection-end-line=\"769\" selection-end-column=\"11\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/common/alert.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"162\">\n              <caret line=\"6\" column=\"18\" selection-start-line=\"6\" selection-start-column=\"18\" selection-end-line=\"6\" selection-end-column=\"18\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/common/carousel.js\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"131\">\n              <caret line=\"7\" column=\"6\" lean-forward=\"true\" selection-start-line=\"7\" selection-start-column=\"6\" selection-end-line=\"7\" selection-end-column=\"6\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"FileTemplateManagerImpl\">\n    <option name=\"RECENT_TEMPLATES\">\n      <list>\n        <option value=\"HTML File\" />\n        <option value=\"JavaScript File\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"FindInProjectRecents\">\n    <findStrings>\n      <find>testp</find>\n    </findStrings>\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"CHANGED_PATHS\">\n      <list>\n        <option value=\"$PROJECT_DIR$/common/loading.js\" />\n        <option value=\"$PROJECT_DIR$/common/choice.js\" />\n        <option value=\"$PROJECT_DIR$/service.html\" />\n        <option value=\"$PROJECT_DIR$/update.html\" />\n        <option value=\"$PROJECT_DIR$/common/alert.js\" />\n        <option value=\"$PROJECT_DIR$/common/carousel.js\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"JsBuildToolGruntFileManager\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\" />\n  <component name=\"JsBuildToolPackageJson\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\" />\n  <component name=\"JsGulpfileManager\">\n    <detection-done>true</detection-done>\n    <sorting>DEFINITION_ORDER</sorting>\n  </component>\n  <component name=\"ProjectFrameBounds\" extendedState=\"6\">\n    <option name=\"x\" value=\"-8\" />\n    <option name=\"y\" value=\"-8\" />\n    <option name=\"width\" value=\"1936\" />\n    <option name=\"height\" value=\"1056\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator proportions=\"\" version=\"1\">\n      <foldersAlwaysOnTop value=\"true\" />\n    </navigator>\n    <panes>\n      <pane id=\"Scope\" />\n      <pane id=\"ProjectPane\">\n        <subPane>\n          <expand>\n            <path>\n              <item name=\"ui\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ui\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ui\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ui\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"bootstrap\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ui\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ui\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"common\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n          </expand>\n          <select />\n        </subPane>\n      </pane>\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"DefaultHtmlFileTemplate\" value=\"HTML File\" />\n    <property name=\"WebServerToolWindowFactoryState\" value=\"false\" />\n    <property name=\"last_opened_file_path\" value=\"$PROJECT_DIR$\" />\n    <property name=\"nodejs_interpreter_path.stuck_in_default_project\" value=\"undefined stuck path\" />\n    <property name=\"nodejs_npm_path_reset_for_default_project\" value=\"true\" />\n  </component>\n  <component name=\"RecentsManager\">\n    <key name=\"MoveFile.RECENT_KEYS\">\n      <recent name=\"D:\\软件新更新\\自写模块\\网络验证\\ui\\jquery\" />\n      <recent name=\"D:\\软件新更新\\自写模块\\网络验证\\ui\\image\" />\n    </key>\n    <key name=\"CopyFile.RECENT_KEYS\">\n      <recent name=\"D:\\软件新更新\\自写模块\\网络验证\\ui\" />\n      <recent name=\"D:\\软件新更新\\自写模块\\网络验证\\ui\\image\" />\n      <recent name=\"D:\\软件新更新\\自写模块\\网络验证\\ui\\jquery\" />\n    </key>\n  </component>\n  <component name=\"RunDashboard\">\n    <option name=\"ruleStates\">\n      <list>\n        <RuleState>\n          <option name=\"name\" value=\"ConfigurationTypeDashboardGroupingRule\" />\n        </RuleState>\n        <RuleState>\n          <option name=\"name\" value=\"StatusDashboardGroupingRule\" />\n        </RuleState>\n      </list>\n    </option>\n  </component>\n  <component name=\"SvnConfiguration\">\n    <configuration />\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"f90dca51-4c4f-4524-a522-3a199c91f4f2\" name=\"Default Changelist\" comment=\"\" />\n      <created>1546949660159</created>\n      <option name=\"number\" value=\"Default\" />\n      <option name=\"presentableId\" value=\"Default\" />\n      <updated>1546949660159</updated>\n      <workItem from=\"1546949661510\" duration=\"2718000\" />\n      <workItem from=\"1547003715263\" duration=\"13266000\" />\n      <workItem from=\"1547033490126\" duration=\"16963000\" />\n      <workItem from=\"1547083941035\" duration=\"12809000\" />\n      <workItem from=\"1547428622073\" duration=\"10000\" />\n      <workItem from=\"1547476016338\" duration=\"1331000\" />\n      <workItem from=\"1547551024014\" duration=\"20304000\" />\n      <workItem from=\"1547625856015\" duration=\"2943000\" />\n      <workItem from=\"1547631041447\" duration=\"70000\" />\n      <workItem from=\"1547641601842\" duration=\"1583000\" />\n      <workItem from=\"1547734564031\" duration=\"950000\" />\n      <workItem from=\"1547792402103\" duration=\"1500000\" />\n      <workItem from=\"1547794012951\" duration=\"1166000\" />\n      <workItem from=\"1547795331600\" duration=\"91000\" />\n      <workItem from=\"1550593912538\" duration=\"83000\" />\n    </task>\n    <servers />\n  </component>\n  <component name=\"TimeTrackingManager\">\n    <option name=\"totallyTimeSpent\" value=\"75787000\" />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"-8\" y=\"-8\" width=\"1936\" height=\"1056\" extended-state=\"6\" />\n    <editor active=\"true\" />\n    <layout>\n      <window_info active=\"true\" content_ui=\"combo\" id=\"Project\" order=\"0\" visible=\"true\" weight=\"0.24960506\" />\n      <window_info id=\"Structure\" order=\"1\" side_tool=\"true\" weight=\"0.25\" />\n      <window_info id=\"Favorites\" order=\"2\" side_tool=\"true\" />\n      <window_info anchor=\"bottom\" id=\"Message\" order=\"0\" />\n      <window_info anchor=\"bottom\" id=\"Find\" order=\"1\" weight=\"0.32972974\" />\n      <window_info anchor=\"bottom\" id=\"Run\" order=\"2\" />\n      <window_info anchor=\"bottom\" id=\"Debug\" order=\"3\" weight=\"0.4\" />\n      <window_info anchor=\"bottom\" id=\"Cvs\" order=\"4\" weight=\"0.25\" />\n      <window_info anchor=\"bottom\" id=\"Inspection\" order=\"5\" weight=\"0.4\" />\n      <window_info anchor=\"bottom\" id=\"TODO\" order=\"6\" />\n      <window_info anchor=\"bottom\" id=\"Docker\" order=\"7\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Version Control\" order=\"8\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Terminal\" order=\"9\" />\n      <window_info anchor=\"bottom\" id=\"Event Log\" order=\"10\" side_tool=\"true\" />\n      <window_info anchor=\"right\" id=\"Commander\" internal_type=\"SLIDING\" order=\"0\" type=\"SLIDING\" weight=\"0.4\" />\n      <window_info anchor=\"right\" id=\"Ant Build\" order=\"1\" weight=\"0.25\" />\n      <window_info anchor=\"right\" content_ui=\"combo\" id=\"Hierarchy\" order=\"2\" weight=\"0.25\" />\n    </layout>\n  </component>\n  <component name=\"TypeScriptGeneratedFilesManager\">\n    <option name=\"version\" value=\"1\" />\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$PROJECT_DIR$/jquery/jquery.min.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state>\n          <caret selection-end-line=\"1\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/bootstrap.min.css\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/image/1163292.png\" />\n    <entry file=\"file://$PROJECT_DIR$/jquery/jquery.mloading.css\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/image/5b17d0aa4c17b.jpg\" />\n    <entry file=\"file://$PROJECT_DIR$/layui/layui.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/bootstrap/js/npm.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/bootstrap/js/bootstrap.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/common/choice.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"513\">\n          <caret line=\"40\" lean-forward=\"true\" selection-start-line=\"40\" selection-end-line=\"40\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/update.html\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"7857\">\n          <caret line=\"291\" column=\"20\" selection-start-line=\"291\" selection-start-column=\"20\" selection-end-line=\"291\" selection-end-column=\"20\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/jquery/jquery.mloading.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"837\">\n          <caret line=\"176\" column=\"4\" selection-start-line=\"176\" selection-start-column=\"4\" selection-end-line=\"176\" selection-end-column=\"4\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/common/alert.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"162\">\n          <caret line=\"6\" column=\"18\" selection-start-line=\"6\" selection-start-column=\"18\" selection-end-line=\"6\" selection-end-column=\"18\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/common/carousel.js\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"131\">\n          <caret line=\"7\" column=\"6\" lean-forward=\"true\" selection-start-line=\"7\" selection-start-column=\"6\" selection-end-line=\"7\" selection-end-column=\"6\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/service.html\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"17763\">\n          <caret line=\"769\" column=\"11\" selection-start-line=\"769\" selection-start-column=\"11\" selection-end-line=\"769\" selection-end-column=\"11\" />\n        </state>\n      </provider>\n    </entry>\n  </component>\n</project>"
  },
  {
    "path": "sdk/易语言/ui/bootstrap/css/bootstrap-theme.css",
    "content": "/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  text-shadow: 0 1px 0 #fff;\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));\n  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-color: #e8e8e8;\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-color: #2e6da4;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));\n  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image:      -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));\n  background-image:         linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));\n  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image:      -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));\n  background-image:         linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n    background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n    background-repeat: repeat-x;\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));\n  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */\n"
  },
  {
    "path": "sdk/易语言/ui/bootstrap/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  filter: alpha(opacity=0);\n  opacity: 0;\n\n  line-break: auto;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n  line-break: auto;\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n            perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "sdk/易语言/ui/bootstrap/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.7\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.7'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector === '#' ? [] : selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.7\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.7'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.7\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.7'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.7'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.7'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.7'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n            this.$element[0] !== e.target &&\n            !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.7'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.7'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.7\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.7'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.3.7'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.7'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "sdk/易语言/ui/bootstrap/js/npm.js",
    "content": "// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')"
  },
  {
    "path": "sdk/易语言/ui/common/alert.js",
    "content": "\r\nloadingStart();\r\nfunction loadingStart() {\r\n    layui.use(\"layer\",function(){\r\n        layer.closeAll();\r\n    });\r\n    $(\"body\").mLoading(\"show\");\r\n}\r\nfunction loadingClose() {\r\n    $(\"body\").mLoading(\"hide\");\r\n}\r\nfunction layerAlert(content) {\r\n    layui.use(\"layer\",function(){\r\n        loadingClose();\r\n        layer.msg(content);\r\n    });\r\n}\r\n\r\n\r\n"
  },
  {
    "path": "sdk/易语言/ui/common/carousel.js",
    "content": "\r\n\r\nvar carouselJson = [\r\n    {\r\n        title: \"测试1\",\r\n        url: 'image/test.jpg',\r\n        open: 'www.wywxy.top',\r\n    },\r\n    {\r\n        title: \"测试2\",\r\n        url: 'image/20190109154436.png',\r\n        open: '',\r\n    },\r\n    {\r\n        title: \"测试2\",\r\n        url: 'image/20190109154436.png',\r\n        open: '',\r\n    },\r\n];\r\n\r\nfor (var i = 0;i < carouselJson.length;i++) {\r\n\r\n    if (i == 0) {\r\n        $(\"#carOl\").append(\"<li data-target=\\\"#myCarousel\\\" data-slide-to=\\\"\"+ i +\"\\\" class=\\\"active\\\"></li>\");\r\n        $(\"#carItem\").append(\"<div class=\\\"item active\\\">\\n\" +\r\n            \"                            <img src=\\\"\"+ carouselJson[i].url +\"\\\" width=\\\"100%\\\" height=\\\"100%\\\">\\n\" +\r\n            \"                            <div class=\\\"carousel-caption\\\">\"+ carouselJson[i].title +\"</div>\\n\" +\r\n            \"                        </div>\");\r\n    } else {\r\n        $(\"#carOl\").append(\"<li data-target=\\\"#myCarousel\\\" data-slide-to=\\\"\"+ i +\"\\\"></li>\");\r\n        $(\"#carItem\").append(\"<div class=\\\"item\\\">\\n\" +\r\n            \"                            <img src=\\\"\"+ carouselJson[i].url +\"\\\" width=\\\"100%\\\" height=\\\"100%\\\">\\n\" +\r\n            \"                            <div class=\\\"carousel-caption\\\">\"+ carouselJson[i].title +\"</div>\\n\" +\r\n            \"                        </div>\");\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "sdk/易语言/ui/common/choice.js",
    "content": "\r\nvar speedyC;\r\n\r\nfunction add(flag) {\r\n    switch (flag) {\r\n        case 0:\r\n            layer.open({\r\n                type: 1,\r\n                skin: 'layui-layer-rim', //加上边框\r\n                area: ['520px', '340px'], //宽高\r\n                title: '提交留言',\r\n                content: $(\"#smsg\").html(),\r\n            });\r\n            break;\r\n        case 1:\r\n            layer.alert('QQ群号: 767477379');\r\n            break;\r\n        case 2:\r\n            layer.alert('微信号: xiaocry1314');\r\n            break;\r\n        case 3:\r\n            layer.alert('QQ号: 1067357662');\r\n            break;\r\n        case 4:\r\n            layui.use(['form'], function(){\r\n                var form = layui.form\r\n                    ,layer = layui.layer;\r\n\r\n                layer.open({\r\n                    title: '设置',\r\n                    type: 1,\r\n                    skin: 'layui-layer-rim', //加上边框\r\n                    area: ['520px', '340px'], //宽高\r\n                    content: $(\"#setting\").html(),\r\n                });\r\n\r\n                //监听指定开关\r\n                form.on('switch(speedy)', function(data){\r\n                    callSpeedy(this.checked);\r\n                });\r\n\r\n                //表单初始赋值\r\n                form.val('setting', {\r\n                    \"speedy\": speedyC\r\n                });\r\n\r\n                form.render();\r\n\r\n            });\r\n            break;\r\n    }\r\n}\r\n\r\nfunction winMin() {\r\n    callWinMin();\r\n}\r\n\r\nfunction winMax() {\r\n    layui.use(\"layer\",function(){\r\n        layer.msg('点击这个按钮是无效滴！兄dei~');\r\n    });\r\n}\r\n\r\nfunction winClose() {\r\n\r\n    layui.use(\"layer\",function(){\r\n        layer.confirm('确定关闭软件吗？', {\r\n            btn: ['确定','取消'] //按钮\r\n        }, function(){\r\n            callWinClose();\r\n        }, function(){\r\n        });\r\n    });\r\n\r\n}\r\n"
  },
  {
    "path": "sdk/易语言/ui/jquery/jquery.mloading.css",
    "content": "/* Author：mingyuhisoft@163.com\n * Github:https://github.com/imingyu/jquery.mloading\n * Npm:npm install jquery.mloading.js\n * Date：2016-7-4\n */\n.mloading-container {\n  position: relative;\n  min-height: 70px;\n  -webkit-transition: height 0.6s ease-in-out;\n  -o-transition: height 0.6s ease-in-out;\n  transition: height 0.6s ease-in-out;\n}\n.mloading {\n  position: absolute;\n  background: #E9E9E8;\n  font: normal 12px/22px \"Microsoft Yahei\", \"微软雅黑\", \"宋体\";\n  display: none;\n  z-index: 1600;\n  background: rgba(233, 233, 232, 0);\n}\n.mloading.active {\n  display: block;\n}\n.mloading.mloading-mask {\n  background: rgba(233, 233, 232, 0.75);\n  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=75);\n}\n.mloading-full {\n  position: fixed;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n}\n.mloading-container > .mloading {\n  top: 0px;\n  left: 0px;\n  width: 100%;\n  height: 100%;\n}\n.mloading-body {\n  width: 100%;\n  height: 100%;\n  position: relative;\n}\n.mloading-bar {\n  width: 250px;\n  min-height: 22px;\n  text-align: center;\n  background: #fff;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.27);\n  border-radius: 7px;\n  padding: 20px 15px;\n  font-size: 14px;\n  color: #999;\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  margin-left: -140px;\n  margin-top: -30px;\n  word-break: break-all;\n}\n@media (max-width: 300px) {\n  .mloading-bar {\n    width: 62px;\n    height: 56px;\n    margin-left: -30px !important;\n    margin-top: -30px !important;\n    padding: 0;\n    line-height: 56px;\n  }\n  .mloading-bar > .mloading-text {\n    display: none;\n  }\n}\n.mloading-bar-sm {\n  width: 62px;\n  height: 56px;\n  margin-left: -30px !important;\n  margin-top: -30px !important;\n  padding: 0;\n  line-height: 56px;\n}\n.mloading-bar-sm > .mloading-text {\n  display: none;\n}\n.mloading-icon {\n  width: 16px;\n  height: 16px;\n  vertical-align: middle;\n}\n.mloading-text {\n  margin-left: 10px;\n}\n"
  },
  {
    "path": "sdk/易语言/ui/jquery/jquery.mloading.js",
    "content": "/* Author：mingyuhisoft@163.com\n * Github:https://github.com/imingyu/jquery.mloading\n * Npm:npm install jquery.mloading.js\n * Date：2016-7-4\n */\n\n;(function (root, factory) {\n    'use strict';\n\n    if (typeof module === 'object' && typeof module.exports === 'object') {\n        factory(require('jquery'),root);\n    } if(typeof define ===\"function\"){\n        if(define.cmd){\n            define(function(require, exports, module){\n                var $ = require(\"jquery\");\n                factory($,root);\n            });\n        }else{\n            define([\"jquery\"],function($){\n                factory($,root);\n            });\n        }\n    }else {\n        factory(root.jQuery,root);\n    }\n} (typeof window !==\"undefined\" ? window : this, function ($, root, undefined) {\n    'use strict';\n    if(!$){\n        $ = root.jQuery || null;\n    }\n    if(!$){\n        throw new TypeError(\"必须引入jquery库方可正常使用！\");\n    }\n\n    var arraySlice = Array.prototype.slice,\n        comparison=function (obj1,obj2) {\n            var result=true;\n            for(var pro in obj1){\n                if(obj1[pro] !== obj2[obj1]){\n                    result=true;\n                    break;\n                }\n            }\n            return result;\n        }\n\n    function MLoading(dom,options) {\n        options=options||{};\n        this.dom=dom;\n        this.options=$.extend(true,{},MLoading.defaultOptions,options);\n        this.curtain=null;\n        this.render().show();\n    }\n    MLoading.prototype={\n        constructor:MLoading,\n        initElement:function () {\n            var dom=this.dom,\n                ops=this.options;\n            var curtainElement=dom.children(\".mloading\"),\n                bodyElement = curtainElement.children('.mloading-body'),\n                barElement = bodyElement.children('.mloading-bar'),\n                iconElement = barElement.children('.mloading-icon'),\n                textElement = barElement.find(\".mloading-text\");\n            if (curtainElement.length == 0) {\n                curtainElement = $('<div class=\"mloading\"></div>');\n                dom.append(curtainElement);\n            }\n            if (bodyElement.length == 0) {\n                bodyElement = $('<div class=\"mloading-body\"></div>');\n                curtainElement.append(bodyElement);\n            }\n            if (barElement.length == 0) {\n                barElement = $('<div class=\"mloading-bar\"></div>');\n                bodyElement.append(barElement);\n            }\n            if (iconElement.length == 0) {\n                var _iconElement=document.createElement(ops.iconTag);\n                iconElement = $(_iconElement);\n                iconElement.addClass(\"mloading-icon\");\n                barElement.append(iconElement);\n            }\n            if (textElement.length == 0) {\n                textElement = $('<span class=\"mloading-text\"></span>');\n                barElement.append(textElement);\n            }\n            \n            this.curtainElement=curtainElement;\n            this.bodyElement = bodyElement;\n            this.barElement = barElement;\n            this.iconElement = iconElement;\n            this.textElement = textElement;\n            return this;\n        },\n        render:function () {\n            var dom=this.dom,\n                ops=this.options;\n            this.initElement();\n            if(dom.is(\"html\") || dom.is(\"body\")){\n                this.curtainElement.addClass(\"mloading-full\");\n            }else{\n                this.curtainElement.removeClass(\"mloading-full\");\n\n                if(!dom.hasClass(\"mloading-container\")){\n                    dom.addClass(\"mloading-container\");\n                }\n            }\n            if(ops.mask){\n                this.curtainElement.addClass(\"mloading-mask\");\n            }else{\n                this.curtainElement.removeClass(\"mloading-mask\");\n            }\n            if(ops.content!=\"\" && typeof ops.content!=\"undefined\"){\n                if(ops.html){\n                    this.bodyElement.html(ops.content);\n                }else{\n                    this.bodyElement.text(ops.content);\n                }\n            }else{\n                this.iconElement.attr(\"src\",ops.icon);\n                if(ops.html){\n                    this.textElement.html(ops.text);\n                }else{\n                    this.textElement.text(ops.text);\n                }\n            }\n\n            return this;\n        },\n        setOptions:function (options) {\n            options=options||{};\n            var oldOptions = this.options;\n            this.options = $.extend(true,{},this.options,options);\n            if(!comparison(oldOptions,this.options)) this.render();\n        },\n        show:function () {\n            var dom=this.dom,\n                ops=this.options,\n                barElement=this.barElement;\n            this.curtainElement.addClass(\"active\");\n            barElement.css({\n                \"marginTop\":\"-\"+barElement.outerHeight()/2+\"px\",\n                \"marginLeft\":\"-\"+barElement.outerWidth()/2+\"px\"\n            });\n\n            return this;\n        },\n        hide:function () {\n            var dom=this.dom,\n                ops=this.options;\n            this.curtainElement.removeClass(\"active\");\n            if(!dom.is(\"html\") && !dom.is(\"body\")){\n                dom.removeClass(\"mloading-container\");\n            }\n            return this;\n        },\n        destroy:function () {\n            var dom=this.dom,\n                ops=this.options;\n            this.curtainElement.remove();\n            if(!dom.is(\"html\") && !dom.is(\"body\")){\n                dom.removeClass(\"mloading-container\");\n            }\n            dom.removeData(MLoading.dataKey);\n            return this;\n        }\n    };\n    MLoading.dataKey=\"MLoading\";\n    MLoading.defaultOptions = {\n        text:\"加载中...\",\n        iconTag:\"img\",\n        icon:\"data:image/gif;base64,R0lGODlhDwAPAKUAAEQ+PKSmpHx6fNTW1FxaXOzu7ExOTIyOjGRmZMTCxPz6/ERGROTi5Pz29JyanGxubMzKzIyKjGReXPT29FxWVGxmZExGROzq7ERCRLy6vISChNze3FxeXPTy9FROTJSSlMTGxPz+/OTm5JyenNTOzGxqbExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBgAhACwAAAAADwAPAAAGd8CQcEgsChuTZMNIDFgsC1Nn9GEwDwDAoqMBWEDFiweA2YoiZevwA9BkDAUhW0MkADYhiEJYwJj2QhYGTBwAE0MUGGp5IR1+RBEAEUMVDg4AAkQMJhgfFyEIWRgDRSALABKgWQ+HRQwaCCEVC7R0TEITHbmtt0xBACH5BAkGACYALAAAAAAPAA8AhUQ+PKSmpHRydNTW1FxWVOzu7MTCxIyKjExKTOTi5LSytHx+fPz6/ERGROTe3GxqbNTS1JyWlFRSVKympNze3FxeXPT29MzKzFROTOzq7ISGhERCRHx6fNza3FxaXPTy9MTGxJSSlExOTOTm5LS2tISChPz+/ExGRJyenKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ6QJNQeIkUhsjkp+EhMZLITKgBAGigQgiiCtiAKJdkBgNYgDYLhmDjQIbKwgfF9C4hPYC5KSMsbBBIJyJYFQAWQwQbI0J8Jh8nDUgHAAcmDA+LKAAcSAkIEhYTAAEoGxsdSSAKIyJcGyRYJiQbVRwDsVkPXrhDDCQBSUEAIfkECQYAEAAsAAAAAA8ADwCFRD48pKKkdHZ01NLUXFpc7OrsTE5MlJKU9Pb03N7cREZExMbEhIKEbGpsXFZUVFZU/P78tLa0fH583NrcZGJk9PL0VE5MnJ6c/Pb05ObkTEZEREJErKqsfHp81NbUXF5c7O7slJaU5OLkzMrMjIaEdG5sVFJU/Pr8TEpMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABndAiHA4DICISCIllBQWQgSNY6NJJAcoAMCw0XaQBQtAYj0ANgcE0SwZlgSe04hI2FiFAyEFRdQYmh8AakIOJhgQHhVCFQoaRAsVGSQWihAXAF9EHFkNEBUXGxsTSBxaGx9dGxFJGKgKAAoSEydNIwoFg01DF7oQQQAh+QQJBgAYACwAAAAADwAPAIVEPjykoqR0cnTU0tRUUlSMiozs6uxMSkx8fnzc3txcXlyUlpT09vRcWlxMRkS0trR8enzc2txcVlSUkpRUTkyMhoTk5uScnpz8/vxEQkR8dnTU1tRUVlSMjoz08vRMTkyEgoTk4uRkYmSclpT8+vy8urwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc0CMcEgsGo9Gw6LhkHRCmICFODgAAJ8M4FDJTIUGCgCRwIQKV+9wMiaWtIAvRqOACiMKwucjJzFIJEN+gEQiHAQcJUMeBROCBFcLRBcAEESQAB0GGB4XGRkbghwCnxkiWhkPRRMMCSAfABkIoUhCDLW4Q0EAIfkECQYAGQAsAAAAAA8ADwCFRD48pKKkdHJ01NLU7OrsXFZUjIqMvLq8TEpM3N7c9Pb0lJaUxMbErK6sfH58bGpsVFJUTEZE3Nrc9PL0XF5clJKUxMLEVE5M5Obk/P78nJ6ctLa0hIaEREJE1NbU7O7sXFpcjI6MvL68TE5M5OLk/Pr8nJqczM7MtLK0hIKEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPAjHBILBqPRsICFCmESMcBAgAYdQAIi9HzSCUyJEOnAx0GBqUSsQJwYFAZyTiFGZZEgHGlJKACQBIZEwJXVR8iYwANE0MTAVMNGSISHAAhRSUYC2pCJFMhH4IaEAdGDGMdFFcdG0cJKSNYDoFIQgqctblBADs=\",\n        html:false,\n        content:\"\",//设置content后，text和icon设置将无效\n        mask:true//是否显示遮罩（半透明背景）\n    };\n\n    $.fn.mLoading=function (options) {\n        var ops={},\n            funName=\"\",\n            funArgs=[];\n        if(typeof options===\"object\"){\n            ops = options;\n        }else if(typeof options ===\"string\"){\n            funName=options;\n            funArgs = arraySlice.call(arguments).splice(0,1);\n        }\n        return this.each(function (i,element) {\n            var dom = $(element),\n                plsInc=dom.data(MLoading.dataKey);\n            if(!plsInc){\n                plsInc=new MLoading(dom,ops);\n            }\n\n            if(funName){\n                var fun = plsInc[funName];\n                if(typeof fun===\"function\"){\n                    fun.apply(plsInc,funArgs);\n                }\n            }\n        });\n    }\n}));"
  },
  {
    "path": "sdk/易语言/ui/layui/css/layui.css",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n .layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-elip,.layui-form-checkbox span,.layui-form-pane .layui-form-label{text-overflow:ellipsis;white-space:nowrap}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:24px;font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:1px;margin:10px 0;border:0;clear:both}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-edge{display:inline-block;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{overflow:hidden}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=240);src:url(../font/iconfont.eot?v=240#iefix) format('embedded-opentype'),url(../font/iconfont.svg?v=240#iconfont) format('svg'),url(../font/iconfont.woff?v=240) format('woff'),url(../font/iconfont.ttf?v=240) format('truetype')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:\"\\e611\"}.layui-icon-set-fill:before{content:\"\\e614\"}.layui-icon-menu-fill:before{content:\"\\e60f\"}.layui-icon-search:before{content:\"\\e615\"}.layui-icon-share:before{content:\"\\e641\"}.layui-icon-set-sm:before{content:\"\\e620\"}.layui-icon-engine:before{content:\"\\e628\"}.layui-icon-close:before{content:\"\\1006\"}.layui-icon-close-fill:before{content:\"\\1007\"}.layui-icon-chart-screen:before{content:\"\\e629\"}.layui-icon-star:before{content:\"\\e600\"}.layui-icon-circle-dot:before{content:\"\\e617\"}.layui-icon-chat:before{content:\"\\e606\"}.layui-icon-release:before{content:\"\\e609\"}.layui-icon-list:before{content:\"\\e60a\"}.layui-icon-chart:before{content:\"\\e62c\"}.layui-icon-ok-circle:before{content:\"\\1005\"}.layui-icon-layim-theme:before{content:\"\\e61b\"}.layui-icon-table:before{content:\"\\e62d\"}.layui-icon-right:before{content:\"\\e602\"}.layui-icon-left:before{content:\"\\e603\"}.layui-icon-cart-simple:before{content:\"\\e698\"}.layui-icon-face-cry:before{content:\"\\e69c\"}.layui-icon-face-smile:before{content:\"\\e6af\"}.layui-icon-survey:before{content:\"\\e6b2\"}.layui-icon-tree:before{content:\"\\e62e\"}.layui-icon-upload-circle:before{content:\"\\e62f\"}.layui-icon-add-circle:before{content:\"\\e61f\"}.layui-icon-download-circle:before{content:\"\\e601\"}.layui-icon-templeate-1:before{content:\"\\e630\"}.layui-icon-util:before{content:\"\\e631\"}.layui-icon-face-surprised:before{content:\"\\e664\"}.layui-icon-edit:before{content:\"\\e642\"}.layui-icon-speaker:before{content:\"\\e645\"}.layui-icon-down:before{content:\"\\e61a\"}.layui-icon-file:before{content:\"\\e621\"}.layui-icon-layouts:before{content:\"\\e632\"}.layui-icon-rate-half:before{content:\"\\e6c9\"}.layui-icon-add-circle-fine:before{content:\"\\e608\"}.layui-icon-prev-circle:before{content:\"\\e633\"}.layui-icon-read:before{content:\"\\e705\"}.layui-icon-404:before{content:\"\\e61c\"}.layui-icon-carousel:before{content:\"\\e634\"}.layui-icon-help:before{content:\"\\e607\"}.layui-icon-code-circle:before{content:\"\\e635\"}.layui-icon-water:before{content:\"\\e636\"}.layui-icon-username:before{content:\"\\e66f\"}.layui-icon-find-fill:before{content:\"\\e670\"}.layui-icon-about:before{content:\"\\e60b\"}.layui-icon-location:before{content:\"\\e715\"}.layui-icon-up:before{content:\"\\e619\"}.layui-icon-pause:before{content:\"\\e651\"}.layui-icon-date:before{content:\"\\e637\"}.layui-icon-layim-uploadfile:before{content:\"\\e61d\"}.layui-icon-delete:before{content:\"\\e640\"}.layui-icon-play:before{content:\"\\e652\"}.layui-icon-top:before{content:\"\\e604\"}.layui-icon-friends:before{content:\"\\e612\"}.layui-icon-refresh-3:before{content:\"\\e9aa\"}.layui-icon-ok:before{content:\"\\e605\"}.layui-icon-layer:before{content:\"\\e638\"}.layui-icon-face-smile-fine:before{content:\"\\e60c\"}.layui-icon-dollar:before{content:\"\\e659\"}.layui-icon-group:before{content:\"\\e613\"}.layui-icon-layim-download:before{content:\"\\e61e\"}.layui-icon-picture-fine:before{content:\"\\e60d\"}.layui-icon-link:before{content:\"\\e64c\"}.layui-icon-diamond:before{content:\"\\e735\"}.layui-icon-log:before{content:\"\\e60e\"}.layui-icon-rate-solid:before{content:\"\\e67a\"}.layui-icon-fonts-del:before{content:\"\\e64f\"}.layui-icon-unlink:before{content:\"\\e64d\"}.layui-icon-fonts-clear:before{content:\"\\e639\"}.layui-icon-triangle-r:before{content:\"\\e623\"}.layui-icon-circle:before{content:\"\\e63f\"}.layui-icon-radio:before{content:\"\\e643\"}.layui-icon-align-center:before{content:\"\\e647\"}.layui-icon-align-right:before{content:\"\\e648\"}.layui-icon-align-left:before{content:\"\\e649\"}.layui-icon-loading-1:before{content:\"\\e63e\"}.layui-icon-return:before{content:\"\\e65c\"}.layui-icon-fonts-strong:before{content:\"\\e62b\"}.layui-icon-upload:before{content:\"\\e67c\"}.layui-icon-dialogue:before{content:\"\\e63a\"}.layui-icon-video:before{content:\"\\e6ed\"}.layui-icon-headset:before{content:\"\\e6fc\"}.layui-icon-cellphone-fine:before{content:\"\\e63b\"}.layui-icon-add-1:before{content:\"\\e654\"}.layui-icon-face-smile-b:before{content:\"\\e650\"}.layui-icon-fonts-html:before{content:\"\\e64b\"}.layui-icon-form:before{content:\"\\e63c\"}.layui-icon-cart:before{content:\"\\e657\"}.layui-icon-camera-fill:before{content:\"\\e65d\"}.layui-icon-tabs:before{content:\"\\e62a\"}.layui-icon-fonts-code:before{content:\"\\e64e\"}.layui-icon-fire:before{content:\"\\e756\"}.layui-icon-set:before{content:\"\\e716\"}.layui-icon-fonts-u:before{content:\"\\e646\"}.layui-icon-triangle-d:before{content:\"\\e625\"}.layui-icon-tips:before{content:\"\\e702\"}.layui-icon-picture:before{content:\"\\e64a\"}.layui-icon-more-vertical:before{content:\"\\e671\"}.layui-icon-flag:before{content:\"\\e66c\"}.layui-icon-loading:before{content:\"\\e63d\"}.layui-icon-fonts-i:before{content:\"\\e644\"}.layui-icon-refresh-1:before{content:\"\\e666\"}.layui-icon-rmb:before{content:\"\\e65e\"}.layui-icon-home:before{content:\"\\e68e\"}.layui-icon-user:before{content:\"\\e770\"}.layui-icon-notice:before{content:\"\\e667\"}.layui-icon-login-weibo:before{content:\"\\e675\"}.layui-icon-voice:before{content:\"\\e688\"}.layui-icon-upload-drag:before{content:\"\\e681\"}.layui-icon-login-qq:before{content:\"\\e676\"}.layui-icon-snowflake:before{content:\"\\e6b1\"}.layui-icon-file-b:before{content:\"\\e655\"}.layui-icon-template:before{content:\"\\e663\"}.layui-icon-auz:before{content:\"\\e672\"}.layui-icon-console:before{content:\"\\e665\"}.layui-icon-app:before{content:\"\\e653\"}.layui-icon-prev:before{content:\"\\e65a\"}.layui-icon-website:before{content:\"\\e7ae\"}.layui-icon-next:before{content:\"\\e65b\"}.layui-icon-component:before{content:\"\\e857\"}.layui-icon-more:before{content:\"\\e65f\"}.layui-icon-login-wechat:before{content:\"\\e677\"}.layui-icon-shrink-right:before{content:\"\\e668\"}.layui-icon-spread-left:before{content:\"\\e66b\"}.layui-icon-camera:before{content:\"\\e660\"}.layui-icon-note:before{content:\"\\e66e\"}.layui-icon-refresh:before{content:\"\\e669\"}.layui-icon-female:before{content:\"\\e661\"}.layui-icon-male:before{content:\"\\e662\"}.layui-icon-password:before{content:\"\\e673\"}.layui-icon-senior:before{content:\"\\e674\"}.layui-icon-theme:before{content:\"\\e66a\"}.layui-icon-tread:before{content:\"\\e6c5\"}.layui-icon-praise:before{content:\"\\e6c6\"}.layui-icon-star-fill:before{content:\"\\e658\"}.layui-icon-rate:before{content:\"\\e67b\"}.layui-icon-template-1:before{content:\"\\e656\"}.layui-icon-vercode:before{content:\"\\e679\"}.layui-icon-cellphone:before{content:\"\\e678\"}.layui-icon-screen-full:before{content:\"\\e622\"}.layui-icon-screen-restore:before{content:\"\\e758\"}.layui-icon-cols:before{content:\"\\e610\"}.layui-icon-export:before{content:\"\\e67d\"}.layui-icon-print:before{content:\"\\e66d\"}.layui-icon-slider:before{content:\"\\e714\"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:absolute;left:200px;right:0;top:0;bottom:0;z-index:998;width:auto;overflow:hidden;overflow-y:auto;box-sizing:border-box}.layui-layout-body{overflow:hidden}.layui-layout-admin .layui-header{background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{top:60px;bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;height:44px;line-height:44px;padding:0 15px;background-color:#eee}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:'';display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space3{margin:-1.5px}.layui-col-space3>*{padding:1.5px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space8{margin:-3.5px}.layui-col-space8>*{padding:3.5px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:22px;border-left:5px solid #009688;border-radius:0 2px 2px 0;background-color:#f2f2f2}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:10px 15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#e2e2e2}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#f2f2f2;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:22px;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #E6E6E6;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-textarea{position:relative}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#eee!important;color:#666!important}.layui-badge-rim,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#e6e6e6}.layui-timeline-item:before,hr{background-color:#e6e6e6}.layui-text{line-height:22px;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding:0 5px!important}.layui-btn{display:inline-block;height:38px;line-height:38px;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border:none;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{margin-right:3px;font-size:18px;vertical-align:bottom;vertical-align:middle\\9}.layui-btn-primary{border:1px solid #C9C9C9;background-color:#fff;color:#555}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border:1px solid #e6e6e6;background-color:#FBFBFB;color:#C9C9C9;cursor:not-allowed;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-sm i{font-size:16px!important}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:14px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#C9C9C9;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #c9c9c9}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\\9;border-width:1px;border-style:solid;background-color:#fff;border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#D2D2D2!important}.layui-input:focus,.layui-textarea:focus{border-color:#C9C9C9!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f2f2f2;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\\9}:root .layui-form-selected .layui-edge{margin-top:-9px\\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878;background-color:#5FB878;color:#fff}.layui-checkbox-disbaled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2}.layui-checkbox-disbaled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disbaled,.layui-checkbox-disbaled i{border-color:#e2e2e2!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disbaled span{background-color:#e2e2e2!important}.layui-checkbox-disbaled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio>i:hover,.layui-form-radioed>i{color:#5FB878}.layui-radio-disbaled>i{color:#e2e2e2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FBFBFB;overflow:hidden;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #e2e2e2}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#e2e2e2;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #e2e2e2}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#f2f2f2}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#e6e6e6}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#f2f2f2}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:0 -1px 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#C9C9C9}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{padding:0 10px;color:#999}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-tree{line-height:26px}.layui-tree li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-tree li .layui-tree-spread,.layui-tree li a{display:inline-block;vertical-align:top;height:26px;*display:inline;*zoom:1;cursor:pointer}.layui-tree li a{font-size:0}.layui-tree li a i{font-size:16px}.layui-tree li a cite{padding:0 6px;font-size:14px;font-style:normal}.layui-tree li i{padding-left:6px;color:#333;-moz-user-select:none}.layui-tree li .layui-tree-check{font-size:13px}.layui-tree li .layui-tree-check:hover{color:#009E94}.layui-tree li ul{display:none;margin-left:20px}.layui-tree li .layui-tree-enter{line-height:24px;border:1px dotted #000}.layui-tree-drag{display:none;position:absolute;left:-666px;top:-666px;background-color:#f2f2f2;padding:5px 10px;border:1px dotted #000;white-space:nowrap}.layui-tree-drag i{padding-right:5px}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar,.layui-nav-tree .layui-nav-itemed:after{position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s}.layui-nav-bar{z-index:1000}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{content:'';top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{content:'';width:0;height:0;border-style:solid dashed dashed;border-color:#fff transparent transparent;overflow:hidden;cursor:pointer;transition:all .2s;-webkit-transition:all .2s;position:absolute;top:50%;right:3px;margin-top:-3px;border-width:6px;border-top-color:rgba(255,255,255,.7)}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{margin-top:-9px;border-style:dashed dashed solid;border-color:transparent transparent #fff}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#333}.layui-nav .layui-nav-child a:hover{background-color:#f2f2f2;color:#000}.layui-nav-child dd{position:relative}.layui-nav .layui-nav-child dd.layui-this a,.layui-nav-child dd.layui-this{background-color:#5FB878;color:#fff}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:45px}.layui-nav-tree .layui-nav-item a{position:relative;height:45px;line-height:45px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item a:hover{background-color:#4E5465}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child a{height:40px;line-height:40px;color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-tree .layui-nav-more{right:10px}.layui-nav-itemed>.layui-nav-child{display:block;padding:0;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-bg-blue .layui-nav-bar,.layui-bg-blue .layui-nav-itemed:after,.layui-bg-blue .layui-this:after{background-color:#93D1FF}.layui-bg-blue .layui-nav-child dd.layui-this{background-color:#1E9FFF}.layui-bg-blue .layui-nav-itemed>a,.layui-nav-tree.layui-bg-blue .layui-nav-title a,.layui-nav-tree.layui-bg-blue .layui-nav-title a:hover{background-color:#007DDB!important}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:'';width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#e2e2e2;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\\0/IE9}.layui-tab-content{padding:10px}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#f2f2f2}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:'';position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:last-child:before{display:none}.layui-timeline-item:first-child:before{display:block}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-8px 6px 0}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#e2e2e2;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #ddd;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New;font-size:12px}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #e6e6e6;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;z-index:66666666;width:280px;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#e2e2e2;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:\"\";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:'';position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #e6e6e6;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-15px}.layui-slider-input-btn{display:none;position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #d2d2d2}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #d2d2d2}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:34px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \\0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-anim{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .3s;-webkit-transition:all .3s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,30px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,30px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}"
  },
  {
    "path": "sdk/易语言/ui/layui/css/layui.mobile.css",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,legend,li,ol,p,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0)}a{text-decoration:none;background:0 0}a:active,a:hover{outline:0}table{border-collapse:collapse;border-spacing:0}li{list-style:none}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-weight:500}address,cite,dfn,em,var{font-style:normal}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}img{border:0;vertical-align:bottom}.layui-inline,input,label{vertical-align:middle}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;outline:0}button,select{text-transform:none}select{-webkit-appearance:none;border:none}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=1.0.7);src:url(../font/iconfont.eot?v=1.0.7#iefix) format('embedded-opentype'),url(../font/iconfont.woff?v=1.0.7) format('woff'),url(../font/iconfont.ttf?v=1.0.7) format('truetype'),url(../font/iconfont.svg?v=1.0.7#iconfont) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-box,.layui-box *{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.layui-border-box,.layui-border-box *{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1}.layui-edge,.layui-upload-iframe{position:absolute;width:0;height:0}.layui-edge{border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:active{background-color:#d2d2d2!important;color:#fff!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-upload-iframe{border:0;visibility:hidden}.layui-upload-enter{border:1px solid #009E94;background-color:#009E94;color:#fff;-webkit-transform:scale(1.1);transform:scale(1.1)}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}@-webkit-keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-left{-webkit-animation-name:layui-m-anim-left;animation-name:layui-m-anim-left}@-webkit-keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-right{-webkit-animation-name:layui-m-anim-right;animation-name:layui-m-anim-right}@-webkit-keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.layui-m-anim-lout{-webkit-animation-name:layui-m-anim-lout;animation-name:layui-m-anim-lout}@-webkit-keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.layui-m-anim-rout{-webkit-animation-name:layui-m-anim-rout;animation-name:layui-m-anim-rout}.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}"
  },
  {
    "path": "sdk/易语言/ui/layui/css/modules/code.css",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}"
  },
  {
    "path": "sdk/易语言/ui/layui/css/modules/laydate/default/laydate.css",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}"
  },
  {
    "path": "sdk/易语言/ui/layui/css/modules/layer/default/layer.css",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+\"px\")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/carousel.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t=\"carousel\",a=\"layui-this\",l=\">*[carousel-item]>*\",o=\"layui-carousel-left\",r=\"layui-carousel-right\",d=\"layui-carousel-prev\",s=\"layui-carousel-next\",u=\"layui-carousel-arrow\",c=\"layui-carousel-ind\",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:\"600px\",height:\"280px\",full:!1,arrow:\"hover\",indicator:\"inside\",autoplay:!0,interval:3e3,anim:\"\",trigger:\"click\",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:\"fixed\",width:\"100%\",height:\"100%\",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr(\"lay-anim\",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class=\"layui-icon '+u+'\" lay-type=\"sub\">'+(\"updown\"===n.anim?\"&#xe619;\":\"&#xe603;\")+\"</button>\",'<button class=\"layui-icon '+u+'\" lay-type=\"add\">'+(\"updown\"===n.anim?\"&#xe61a;\":\"&#xe602;\")+\"</button>\"].join(\"\"));n.elem.attr(\"lay-arrow\",n.arrow),n.elem.find(\".\"+u)[0]&&n.elem.find(\".\"+u).remove(),n.elem.append(t),t.on(\"click\",function(){var n=i(this),t=n.attr(\"lay-type\");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class=\"'+c+'\"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push(\"<li\"+(n.index===e?' class=\"layui-this\"':\"\")+\"></li>\")}),i.join(\"\")}(),\"</ul></div>\"].join(\"\"));n.elem.attr(\"lay-indicator\",n.indicator),n.elem.find(\".\"+c)[0]&&n.elem.find(\".\"+c).remove(),n.elem.append(t),\"updown\"===n.anim&&t.css(\"margin-top\",-(t.height()/2)),t.find(\"li\").on(\"hover\"===n.trigger?\"mouseover\":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide(\"add\",a-n.index):a<n.index&&e.slide(\"sub\",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr(\"lay-filter\");n.haveSlide||(\"sub\"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+\" \"+d+\" \"+s+\" \"+o+\" \"+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find(\"li\").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,\"change(\"+m+\")\",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data(\"haveEvents\")||(i.elem.on(\"mouseenter\",function(){clearInterval(e.timer)}).on(\"mouseleave\",function(){e.autoplay()}),i.elem.data(\"haveEvents\",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/code.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.$,l=\"http://www.layui.com/doc/modules/code.html\";e(\"code\",function(e){var t=[];e=e||{},e.elem=a(e.elem||\".layui-code\"),e.about=!(\"about\"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr(\"lay-encode\")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")),c.html('<ol class=\"layui-code-ol\"><li>'+o.replace(/[\\r\\t\\n]+/g,\"</li><li>\")+\"</li></ol>\"),c.find(\">.layui-code-h3\")[0]||c.prepend('<h3 class=\"layui-code-h3\">'+(c.attr(\"lay-title\")||e.title||\"code\")+(e.about?'<a href=\"'+l+'\" target=\"_blank\">layui.code</a>':\"\")+\"</h3>\");var d=c.find(\">.layui-code-ol\");c.addClass(\"layui-box layui-code-view\"),(c.attr(\"lay-skin\")||e.skin)&&c.addClass(\"layui-code-\"+(c.attr(\"lay-skin\")||e.skin)),(d.find(\"li\").length/100|0)>0&&d.css(\"margin-left\",(d.find(\"li\").length/100|0)+\"px\"),(c.attr(\"lay-height\")||e.height)&&d.css(\"max-height\",c.attr(\"lay-height\")||e.height)})})}).addcss(\"modules/code.css\",\"skincodecss\");"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/colorpicker.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,\"colorpicker\",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t=\"colorpicker\",n=\"layui-show\",l=\"layui-colorpicker\",c=\".layui-colorpicker-main\",a=\"layui-icon-down\",s=\"layui-icon-close\",f=\"layui-colorpicker-trigger-span\",d=\"layui-colorpicker-trigger-i\",u=\"layui-colorpicker-side\",p=\"layui-colorpicker-side-slider\",g=\"layui-colorpicker-basis\",v=\"layui-colorpicker-alpha-bgcolor\",h=\"layui-colorpicker-alpha-slider\",m=\"layui-colorpicker-basis-cursor\",b=\"layui-colorpicker-main-input\",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf(\"#\")>-1?e.substring(1):e;if(3==e.length){var i=e.split(\"\");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]=\"0\"+i)}),r.join(\"\")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:\"\",size:null,alpha:!1,format:\"hex\",predefine:!1,colors:[\"#009688\",\"#5FB878\",\"#1E9FFF\",\"#FF5722\",\"#FFB800\",\"#01AAED\",\"#999\",\"#c00\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"rgb(0, 186, 189)\",\"rgb(255, 120, 0)\",\"rgb(250, 212, 0)\",\"#393D49\",\"rgba(0,0,0,.5)\",\"rgba(255, 69, 0, 0.68)\",\"rgba(144, 240, 144, 0.5)\",\"rgba(31, 147, 255, 0.73)\"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['<div class=\"layui-unselect layui-colorpicker\">',\"<span \"+(\"rgb\"==o.format&&o.alpha?'class=\"layui-colorpicker-trigger-bgcolor\"':\"\")+\">\",'<span class=\"layui-colorpicker-trigger-span\" ','lay-type=\"'+(\"rgb\"==o.format?o.alpha?\"rgba\":\"torgb\":\"\")+'\" ','style=\"'+function(){var e=\"\";return o.color?(e=o.color,(o.color.match(/[0-9]{1,3}/g)||[]).length>3&&(o.alpha&&\"rgb\"==o.format||(e=\"#\"+C(k(P(o.color))))),\"background: \"+e):e}()+'\">','<i class=\"layui-icon layui-colorpicker-trigger-i '+(o.color?a:s)+'\"></i>',\"</span>\",\"</span>\",\"</div>\"].join(\"\")),t=i(o.elem);o.size&&r.addClass(\"layui-colorpicker-\"+o.size),t.addClass(\"layui-inline\").html(e.elemColorBox=r),e.color=e.elemColorBox.find(\".\"+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['<div id=\"layui-colorpicker'+e.index+'\" data-index=\"'+e.index+'\" class=\"layui-anim layui-anim-upbit layui-colorpicker-main\">','<div class=\"layui-colorpicker-main-wrapper\">','<div class=\"layui-colorpicker-basis\">','<div class=\"layui-colorpicker-basis-white\"></div>','<div class=\"layui-colorpicker-basis-black\"></div>','<div class=\"layui-colorpicker-basis-cursor\"></div>',\"</div>\",'<div class=\"layui-colorpicker-side\">','<div class=\"layui-colorpicker-side-slider\"></div>',\"</div>\",\"</div>\",'<div class=\"layui-colorpicker-main-alpha '+(o.alpha?n:\"\")+'\">','<div class=\"layui-colorpicker-alpha-bgcolor\">','<div class=\"layui-colorpicker-alpha-slider\"></div>',\"</div>\",\"</div>\",function(){if(o.predefine){var e=['<div class=\"layui-colorpicker-main-pre\">'];return layui.each(o.colors,function(i,o){e.push(['<div class=\"layui-colorpicker-pre'+((o.match(/[0-9]{1,3}/g)||[]).length>3?\" layui-colorpicker-pre-isalpha\":\"\")+'\">','<div style=\"background:'+o+'\"></div>',\"</div>\"].join(\"\"))}),e.push(\"</div>\"),e.join(\"\")}return\"\"}(),'<div class=\"layui-colorpicker-main-input\">','<div class=\"layui-inline\">','<input type=\"text\" class=\"layui-input\">',\"</div>\",'<div class=\"layui-btn-container\">','<button class=\"layui-btn layui-btn-primary layui-btn-sm\" colorpicker-events=\"clear\">清空</button>','<button class=\"layui-btn layui-btn-sm\" colorpicker-events=\"confirm\">确定</button>',\"</div\",\"</div>\",\"</div>\"].join(\"\"));e.elemColorBox.find(\".\"+f)[0];i(c)[0]&&i(c).data(\"index\")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i(\"body\").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i(\"#layui-colorpicker\"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?\"scrollLeft\":\"scrollTop\",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?\"clientWidth\":\"clientHeight\"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a(\"width\")?f=a(\"width\")-n-s:f<s&&(f=s),d+l+s>a()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+(\"fixed\"===i.position?0:c(1))+\"px\",r.style.top=d+(\"fixed\"===i.position?0:c())+\"px\"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find(\".\"+f)),o=e.elemPicker.find(\".\"+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr(\"lay-type\");if(e.select(n.h,n.s,n.b),\"torgb\"===l&&o.find(\"input\").val(t),\"rgba\"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find(\"input\").val(\"rgba(\"+c.r+\", \"+c.g+\", \"+c.b+\", 1)\"),e.elemPicker.find(\".\"+h).css(\"left\",280);else{o.find(\"input\").val(t);var a=280*t.slice(t.lastIndexOf(\",\")+1,t.length-1);e.elemPicker.find(\".\"+h).css(\"left\",a)}e.elemPicker.find(\".\"+v)[0].style.background=\"linear-gradient(to right, rgba(\"+c.r+\", \"+c.g+\", \"+c.b+\", 0), rgb(\"+c.r+\", \"+c.g+\", \"+c.b+\"))\"}}else e.select(0,100,100),o.find(\"input\").val(\"\"),e.elemPicker.find(\".\"+v)[0].style.background=\"\",e.elemPicker.find(\".\"+h).css(\"left\",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f),t=r.attr(\"lay-type\"),n=e.elemPicker.find(\".\"+u),l=e.elemPicker.find(\".\"+p),c=e.elemPicker.find(\".\"+g),y=e.elemPicker.find(\".\"+m),C=e.elemPicker.find(\".\"+v),w=e.elemPicker.find(\".\"+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find(\".\"+d),F=e.elemPicker.find(\".layui-colorpicker-pre\").children(\"div\"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background=\"rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\")\",\"torgb\"===t&&e.elemPicker.find(\".\"+b).find(\"input\").val(\"rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\")\"),\"rgba\"===t){var d=0;d=280*c,w.css(\"left\",d),e.elemPicker.find(\".\"+b).find(\"input\").val(\"rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", \"+c+\")\"),r[0].style.background=\"rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", \"+c+\")\",C[0].style.background=\"linear-gradient(to right, rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", 0), rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\"))\"}o.change&&o.change(e.elemPicker.find(\".\"+b).find(\"input\").val())},M=i(['<div class=\"layui-auxiliar-moving\" id=\"LAY-colorpicker-moving\"></div'].join(\"\")),Y=function(e){i(\"#LAY-colorpicker-moving\")[0]||i(\"body\").append(M),M.on(\"mousemove\",e),M.on(\"mouseup\",function(){M.remove()}).on(\"mouseleave\",function(){M.remove()})};l.on(\"mousedown\",function(e){var i=this.offsetTop,o=e.clientY,r=function(e){var r=i+(e.clientY-o),t=n[0].offsetHeight;r<0&&(r=0),r>t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on(\"click\",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on(\"mousedown\",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on(\"mousedown\",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,\"mousedown\")}),w.on(\"mousedown\",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on(\"click\",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on(\"click\",function(){i(this).parent(\".layui-colorpicker-pre\").addClass(\"selected\").siblings().removeClass(\"selected\");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(\",\")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find(\".\"+p).css(\"top\",c),t.elemPicker.find(\".\"+g)[0].style.background=\"#\"+n,t.elemPicker.find(\".\"+m).css({top:a,left:s}),\"change\"!==r&&t.elemPicker.find(\".\"+b).find(\"input\").val(\"#\"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f),t=e.elemPicker.find(\".\"+b+\" input\"),n={clear:function(i){r[0].style.background=\"\",e.elemColorBox.find(\".\"+d).removeClass(a).addClass(s),e.color=\"\",o.done&&o.done(\"\"),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(\",\")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c=\"#\"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&\"rgba\"===r.attr(\"lay-type\")){var u=280*l.slice(l.lastIndexOf(\",\")+1,l.length-1);e.elemPicker.find(\".\"+h).css(\"left\",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c=\"#\"+C(f),e.elemColorBox.find(\".\"+d).removeClass(s).addClass(a);return\"change\"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on(\"click\",\"*[colorpicker-events]\",function(){var e=i(this),o=e.attr(\"colorpicker-events\");n[o]&&n[o].call(this,e)}),t.on(\"keyup\",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:\"change\")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f);e.elemColorBox.on(\"click\",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on(\"click\",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents(\".\"+l)[0]&&!i(o.target).hasClass(c.replace(/\\./g,\"\"))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find(\".\"+d).removeClass(a).addClass(s);r[0].style.background=e.color||\"\",e.removePicker()}}),B.on(\"resize\",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/element.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(t){\"use strict\";var a=layui.$,i=(layui.hint(),layui.device()),e=\"element\",l=\"layui-this\",n=\"layui-show\",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.children(\".layui-tab-bar\"),o=l.children(\".layui-tab-content\"),r='<li lay-id=\"'+(i.id||\"\")+'\"'+(i.attr?' lay-attr=\"'+i.attr+'\"':\"\")+\">\"+(i.title||\"unnaming\")+\"</li>\";return s[0]?s.before(r):n.append(r),o.append('<div class=\"layui-tab-item\">'+(i.content||\"\")+\"</div>\"),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.find('>li[lay-id=\"'+i+'\"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.find('>li[lay-id=\"'+i+'\"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on(\"click\",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e=\"layui-progress\",l=a(\".\"+e+\"[lay-filter=\"+t+\"]\"),n=l.find(\".\"+e+\"-bar\"),s=n.find(\".\"+e+\"-text\");return n.css(\"width\",i),s.text(i),this};var o=\".layui-nav\",r=\"layui-nav-item\",c=\"layui-nav-bar\",u=\"layui-nav-tree\",d=\"layui-nav-child\",y=\"layui-nav-more\",h=\"layui-anim layui-anim-upbit\",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children(\"li\").index(r),c=o.headerElem?r.parent():r.parents(\".layui-tab\").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(\".layui-tab-content\").children(\".layui-tab-item\"),d=r.find(\"a\"),y=c.attr(\"lay-filter\");\"javascript:;\"!==d.attr(\"href\")&&\"_blank\"===d.attr(\"target\")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,\"tab(\"+y+\")\",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(\".layui-tab\").eq(0),r=o.children(\".layui-tab-content\").children(\".layui-tab-item\"),c=o.attr(\"lay-filter\");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,\"tabDelete(\"+c+\")\",{elem:o,index:s})},tabAuto:function(){var t=\"layui-tab-more\",e=\"layui-tab-bar\",l=\"layui-tab-close\",n=this;a(\".layui-tab\").each(function(){var s=a(this),o=s.children(\".layui-tab-title\"),r=(s.children(\".layui-tab-content\").children(\".layui-tab-item\"),'lay-stope=\"tabmore\"'),c=a('<span class=\"layui-unselect layui-tab-bar\" '+r+\"><i \"+r+' class=\"layui-icon\">&#xe61a;</i></span>');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr(\"lay-allowClose\")&&o.find(\"li\").each(function(){var t=a(this);if(!t.find(\".\"+l)[0]){var i=a('<i class=\"layui-icon layui-unselect '+l+'\">&#x1006;</i>');i.on(\"click\",f.tabDelete),t.append(i)}}),\"string\"!=typeof s.attr(\"lay-unauto\"))if(o.prop(\"scrollWidth\")>o.outerWidth()+1){if(o.find(\".\"+e)[0])return;o.append(c),s.attr(\"overflow\",\"\"),c.on(\"click\",function(a){o[this.title?\"removeClass\":\"addClass\"](t),this.title=this.title?\"\":\"收缩\"})}else o.find(\".\"+e).remove(),s.removeAttr(\"overflow\")})},hideTabMore:function(t){var i=a(\".layui-tab-title\");t!==!0&&\"tabmore\"===a(t.target).attr(\"lay-stope\")||(i.removeClass(\"layui-tab-more\"),i.find(\".layui-tab-bar\").attr(\"title\",\"\"))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr(\"lay-filter\"),s=t.parent(),c=t.siblings(\".\"+d),y=\"string\"==typeof s.attr(\"lay-unselect\");\"javascript:;\"!==t.attr(\"href\")&&\"_blank\"===t.attr(\"target\")||y||c[0]||(i.find(\".\"+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s[\"none\"===c.css(\"display\")?\"addClass\":\"removeClass\"](r+\"ed\"),\"all\"===i.attr(\"lay-shrink\")&&s.siblings().removeClass(r+\"ed\"))),layui.event.call(this,e,\"nav(\"+n+\")\",t)},collapse:function(){var t=a(this),i=t.find(\".layui-colla-icon\"),l=t.siblings(\".layui-colla-content\"),s=t.parents(\".layui-collapse\").eq(0),o=s.attr(\"lay-filter\"),r=\"none\"===l.css(\"display\");if(\"string\"==typeof s.attr(\"lay-accordion\")){var c=s.children(\".layui-colla-item\").children(\".\"+n);c.siblings(\".layui-colla-title\").children(\".layui-colla-icon\").html(\"&#xe602;\"),c.removeClass(n)}l[r?\"addClass\":\"removeClass\"](n),i.html(r?\"&#xe61a;\":\"&#xe602;\"),layui.event.call(this,e,\"collapse(\"+o+\")\",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter=\"'+e+'\"]':\"\"}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find(\".\"+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children(\"a\").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css(\"marginLeft\")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),\"block\"===f.css(\"display\")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find(\".\"+y).addClass(y+\"d\")},300))};a(o+l).each(function(i){var l=a(this),o=a('<span class=\"'+c+'\"></span>'),h=l.find(\".\"+r);l.find(\".\"+c)[0]||(l.append(o),h.on(\"mouseenter\",function(){b.call(this,o,l,i)}).on(\"mouseleave\",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find(\".\"+d).removeClass(n),l.find(\".\"+y).removeClass(y+\"d\")},300))}),l.on(\"mouseleave\",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find(\"a\").each(function(){var t=a(this),i=(t.parent(),t.siblings(\".\"+d));i[0]&&!t.children(\".\"+y)[0]&&t.append('<span class=\"'+y+'\"></span>'),t.off(\"click\",f.clickThis).on(\"click\",f.clickThis)})})},breadcrumb:function(){var t=\".layui-breadcrumb\";a(t+l).each(function(){var t=a(this),i=\"lay-separator\",e=t.attr(i)||\"/\",l=t.find(\"a\");l.next(\"span[\"+i+\"]\")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(\"<span \"+i+\">\"+e+\"</span>\")}),t.css(\"visibility\",\"visible\"))})},progress:function(){var t=\"layui-progress\";a(\".\"+t+l).each(function(){var i=a(this),e=i.find(\".layui-progress-bar\"),l=e.attr(\"lay-percent\");e.css(\"width\",function(){return/^.+\\/.+$/.test(l)?100*new Function(\"return \"+l)()+\"%\":l}()),i.attr(\"lay-showPercent\")&&setTimeout(function(){e.html('<span class=\"'+t+'-text\">'+l+\"</span>\")},350)})},collapse:function(){var t=\"layui-collapse\";a(\".\"+t+l).each(function(){var t=a(this).find(\".layui-colla-item\");t.each(function(){var t=a(this),i=t.find(\".layui-colla-title\"),e=t.find(\".layui-colla-content\"),l=\"none\"===e.css(\"display\");i.find(\".layui-colla-icon\").remove(),i.append('<i class=\"layui-icon layui-colla-icon\">'+(l?\"&#xe602;\":\"&#xe61a;\")+\"</i>\"),i.off(\"click\",f.collapse).on(\"click\",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=\".layui-tab-title li\";b.on(\"click\",v,f.tabClick),b.on(\"click\",f.hideTabMore),a(window).on(\"resize\",f.tabAuto),t(e,p)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/flow.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var l=layui.$,o=function(e){},t='<i class=\"layui-anim layui-anim-rotate layui-anim-loop layui-icon \">&#xe63e;</i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!(\"isAuto\"in e)||e.isAuto,v=e.end||\"没有更多了\",y=e.scrollElem&&e.scrollElem!==document,d=\"<cite>加载更多</cite>\",h=l('<div class=\"layui-flow-more\"><a href=\"javascript:;\">'+d+\"</a></div>\");f.find(\".layui-flow-more\")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find(\"a\").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find(\"a\").html(t),\"function\"==typeof e.done&&e.done(++c,p)};if(g(),h.find(\"a\").on(\"click\",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+\" img\",scrollElem:e.scrollElem});return s?(m.on(\"scroll\",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop(\"scrollHeight\"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||\"img\",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr(\"src\")){var m=e.attr(\"lay-src\");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr(\"src\",m).removeAttr(\"lay-src\"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on(\"scroll\",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e(\"flow\",new o)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/form.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l=\"form\",r=\".layui-form\",s=\"layui-this\",o=\"layui-hide\",c=\"layui-disabled\",u=function(){this.config={verify:{required:[/[\\S]+/,\"必填项不能为空\"],phone:[/^1\\d{10}$/,\"请输入正确的手机号\"],email:[/^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/,\"邮箱格式不正确\"],url:[/(^#)|(^http(s*):\\/\\/[^\\s]+\\.[^\\s]+)/,\"链接格式不正确\"],number:function(e){if(!e||isNaN(e))return\"只能填写数字\"},date:[/^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/,\"日期格式不正确\"],identity:[/(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/,\"请输入正确的身份证号\"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=t(r+'[lay-filter=\"'+e+'\"]');a.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name=\"'+e+'\"]');a[0]&&(i=a[0].type,\"checkbox\"===i?a[0].checked=t:\"radio\"===i?a.each(function(){this.value===t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e)},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter=\"'+i+'\"]':\"\"}()),d={select:function(){var e,i=\"请选择\",a=\"layui-form-select\",n=\"layui-select-title\",r=\"layui-select-none\",d=\"\",f=u.find(\"select\"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t(\".\"+a).removeClass(a+\"ed \"+a+\"up\"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find(\".\"+n),k=m.find(\"input\"),x=i.find(\"dl\"),g=x.children(\"dd\"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=x.outerHeight();b=p[0].selectedIndex,i.addClass(a+\"ed\"),g.removeClass(o),y=null,g.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+\"up\"),$()},w=function(e){i.removeClass(a+\"ed \"+a+\"up\"),k.blur(),y=null,e||T(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr(\"placeholder\")&&(d=\"\"),k.val(d||\"\"))})},$=function(){var e=x.children(\"dd.\"+s);if(e[0]){var t=e.position().top,i=x.height(),a=e.height();t>i&&x.scrollTop(t+x.scrollTop()-i+a-5),t<0&&x.scrollTop(t+x.scrollTop()-5)}};m.on(\"click\",function(e){i.hasClass(a+\"ed\")?w():(v(e,!0),C()),x.find(\".\"+r).remove()}),m.find(\".layui-edge\").on(\"click\",function(){k.focus()}),k.on(\"keyup\",function(e){var t=e.keyCode;9===t&&C()}).on(\"keydown\",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=x.children(\"dd.\"+s);if(x.children(\"dd.\"+o)[0]&&\"next\"===t){var i=x.children(\"dd:not(.\"+o+\",.\"+c+\")\"),n=i.eq(0).index();if(n>=0&&n<e.index()&&!i.hasClass(s))return i.eq(0).prev()[0]?i.eq(0).prev():x.children(\":last\")}return a&&a[0]?a:y&&y[0]?y:e}();return l=r[t](),n=r[t](\"dd:not(.\"+o+\")\"),l[0]?(y=r[t](),n[0]&&!n.hasClass(c)||!y[0]?(n.addClass(s).siblings().removeClass(s),void $()):i(t,y)):y=null};38===t&&i(\"prev\"),40===t&&i(\"next\"),13===t&&(e.preventDefault(),x.children(\"dd.\"+s).trigger(\"click\"))});var T=function(e,i,a){var n=0;layui.each(g,function(){var i=t(this),l=i.text(),r=l.indexOf(e)===-1;(\"\"===e||\"blur\"===a?e!==l:r)&&n++,\"keyup\"===a&&i[r?\"addClass\":\"removeClass\"](o)});var l=n===g.length;return i(l),l},j=function(e){var t=this.value,i=e.keyCode;return 9!==i&&13!==i&&37!==i&&38!==i&&39!==i&&40!==i&&(T(t,function(e){e?x.find(\".\"+r)[0]||x.append('<p class=\"'+r+'\">无匹配项</p>'):x.find(\".\"+r).remove()},\"keyup\"),\"\"===t&&x.find(\".\"+r).remove(),void $())};f&&k.on(\"keyup\",j).on(\"blur\",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr(\"placeholder\")&&(d=\"\"),setTimeout(function(){T(k.val(),function(e){d||k.val(\"\")},\"blur\")},200)}),g.on(\"click\",function(){var e=t(this),a=e.attr(\"lay-value\"),n=p.attr(\"lay-filter\");return!e.hasClass(c)&&(e.hasClass(\"layui-select-tips\")?k.val(\"\"):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass(\"layui-form-danger\"),layui.event.call(this,l,\"select(\"+n+\")\",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find(\"dl>dt\").on(\"click\",function(e){return!1}),t(document).off(\"click\",v).on(\"click\",v)}};f.each(function(e,l){var r=t(this),o=r.next(\".\"+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if(\"string\"==typeof r.attr(\"lay-ignore\"))return r.show();var h=\"string\"==typeof r.attr(\"lay-search\"),p=v?v.value?i:v.innerHTML||i:i,m=t(['<div class=\"'+(h?\"\":\"layui-unselect \")+a,(u?\" layui-select-disabled\":\"\")+'\">','<div class=\"'+n+'\">','<input type=\"text\" placeholder=\"'+p+'\" '+('value=\"'+(d?f.html():\"\")+'\"')+(h?\"\":\" readonly\")+' class=\"layui-input'+(h?\"\":\" layui-unselect\")+(u?\" \"+c:\"\")+'\">','<i class=\"layui-edge\"></i></div>','<dl class=\"layui-anim layui-anim-upbit'+(r.find(\"optgroup\")[0]?\" layui-select-group\":\"\")+'\">',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?\"optgroup\"===a.tagName.toLowerCase()?t.push(\"<dt>\"+a.label+\"</dt>\"):t.push('<dd lay-value=\"'+a.value+'\" class=\"'+(d===a.value?s:\"\")+(a.disabled?\" \"+c:\"\")+'\">'+a.innerHTML+\"</dd>\"):t.push('<dd lay-value=\"\" class=\"layui-select-tips\">'+(a.innerHTML||i)+\"</dd>\")}),0===t.length&&t.push('<dd lay-value=\"\" class=\"'+c+'\">没有选项</dd>'),t.join(\"\")}(r.find(\"*\"))+\"</dl>\",\"</div>\"].join(\"\"));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:[\"layui-form-checkbox\",\"layui-form-checked\",\"checkbox\"],_switch:[\"layui-form-switch\",\"layui-form-onswitch\",\"switch\"]},i=u.find(\"input[type=checkbox]\"),a=function(e,i){var a=t(this);e.on(\"click\",function(){var t=a.attr(\"lay-filter\"),n=(a.attr(\"lay-text\")||\"\").split(\"|\");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find(\"em\").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find(\"em\").text(n[0])),layui.event.call(a[0],l,i[2]+\"(\"+t+\")\",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr(\"lay-skin\"),s=(l.attr(\"lay-text\")||\"\").split(\"|\"),o=this.disabled;\"switch\"===r&&(r=\"_\"+r);var u=e[r]||e.checkbox;if(\"string\"==typeof l.attr(\"lay-ignore\"))return l.show();var d=l.next(\".\"+u[0]),f=t(['<div class=\"layui-unselect '+u[0],n.checked?\" \"+u[1]:\"\",o?\" layui-checkbox-disbaled \"+c:\"\",'\"',r?' lay-skin=\"'+r+'\"':\"\",\">\",function(){var e=n.title.replace(/\\s/g,\"\"),t={checkbox:[e?\"<span>\"+n.title+\"</span>\":\"\",'<i class=\"layui-icon layui-icon-ok\"></i>'].join(\"\"),_switch:\"<em>\"+((n.checked?s[0]:s[1])||\"\")+\"</em><i></i>\"};return t[r]||t.checkbox}(),\"</div>\"].join(\"\"));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e=\"layui-form-radio\",i=[\"&#xe643;\",\"&#xe63f;\"],a=u.find(\"input[type=radio]\"),n=function(a){var n=t(this),s=\"layui-anim-scaleSpring\";a.on(\"click\",function(){var o=n[0].name,c=n.parents(r),u=n.attr(\"lay-filter\"),d=c.find(\"input[name=\"+o.replace(/(\\.|#|\\[|\\])/g,\"\\\\$1\")+\"]\");n[0].disabled||(layui.each(d,function(){var a=t(this).next(\".\"+e);this.checked=!1,a.removeClass(e+\"ed\"),a.find(\".layui-icon\").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+\"ed\"),a.find(\".layui-icon\").addClass(s).html(i[0]),layui.event.call(n[0],l,\"radio(\"+u+\")\",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next(\".\"+e),o=this.disabled;if(\"string\"==typeof r.attr(\"lay-ignore\"))return r.show();s[0]&&s.remove();var u=t(['<div class=\"layui-unselect '+e,l.checked?\" \"+e+\"ed\":\"\",(o?\" layui-radio-disbaled \"+c:\"\")+'\">','<i class=\"layui-anim layui-icon\">'+i[l.checked?0:1]+\"</i>\",\"<div>\"+function(){var e=l.title||\"\";return\"string\"==typeof r.next().attr(\"lay-radio\")&&(e=r.next().html(),r.next().remove()),e}()+\"</div>\",\"</div>\"].join(\"\"));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error(\"不支持的\"+e+\"表单渲染\"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=t(this),a=f.config.verify,s=null,o=\"layui-form-danger\",c={},u=e.parents(r),d=u.find(\"*[lay-verify]\"),v=e.parents(\"form\")[0],h=u.find(\"input,select,textarea\"),y=e.attr(\"lay-filter\");if(layui.each(d,function(e,l){var r=t(this),c=r.attr(\"lay-verify\").split(\"|\"),u=r.attr(\"lay-verType\"),d=r.val();if(r.removeClass(o),layui.each(c,function(e,t){var c,f=\"\",v=\"function\"==typeof a[t];if(a[t]){var c=v?f=a[t](d,l):!a[t][0].test(d);if(f=f||a[t][1],c)return\"tips\"===u?i.tips(f,function(){return\"string\"==typeof r.attr(\"lay-ignore\")||\"select\"!==l.tagName.toLowerCase()&&!/^checkbox|radio$/.test(l.type)?r:r.next()}(),{tips:1}):\"alert\"===u?i.alert(f,{title:\"提示\",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||l.focus(),r.addClass(o),s=!0}}),s)return s}),s)return!1;var p={};return layui.each(h,function(e,t){if(t.name=(t.name||\"\").replace(/^\\s*|\\s*&/,\"\"),t.name){if(/^.*\\[\\]$/.test(t.name)){var i=t.name.match(/^(.*)\\[\\]$/g)[0];p[i]=0|p[i],t.name=t.name.replace(/^(.*)\\[\\]$/,\"$1[\"+p[i]++ +\"]\")}/^checkbox|radio$/.test(t.type)&&!t.checked||(c[t.name]=t.value)}}),layui.event.call(this,l,\"submit(\"+y+\")\",{elem:this,form:v,field:c})},f=new u,v=t(document),h=t(window);f.render(),v.on(\"reset\",r,function(){var e=t(this).attr(\"lay-filter\");setTimeout(function(){f.render(null,e)},50)}),v.on(\"submit\",r,d).on(\"click\",\"*[lay-submit]\",d),e(l,f)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/jquery.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e,t){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&\"length\"in e&&e.length,n=pe.type(e);return\"function\"!==n&&!pe.isWindow(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if(\"string\"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener(\"DOMContentLoaded\",s),e.removeEventListener(\"load\",s)):(re.detachEvent(\"onreadystatechange\",s),e.detachEvent(\"onload\",s))}function s(){(re.addEventListener||\"load\"===e.event.type||\"complete\"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r=\"data-\"+t.replace(_e,\"-$1\").toLowerCase();if(n=e.getAttribute(r),\"string\"==typeof n){try{n=\"true\"===n||\"false\"!==n&&(\"null\"===n?null:+n+\"\"===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if((\"data\"!==t||!pe.isEmptyObject(e[t]))&&\"toJSON\"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||\"string\"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),\"object\"!=typeof t&&\"function\"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),\"string\"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(\" \")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,\"\")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?\"\":\"px\"),c=(pe.cssNumber[t]||\"px\"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||\".5\",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split(\"|\"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,\"globalEval\",!t||pe._data(t[r],\"globalEval\"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x<d;x++)if(a=e[x],a||0===a)if(\"object\"===pe.type(a))pe.merge(v,a.nodeType?[a]:a);else if(Ue.test(a)){for(u=u||y.appendChild(t.createElement(\"div\")),l=(We.exec(a)||[\"\",\"\"])[1].toLowerCase(),f=Xe[l]||Xe._default,u.innerHTML=f[1]+pe.htmlPrefilter(a)+f[2],o=f[0];o--;)u=u.lastChild;if(!fe.leadingWhitespace&&$e.test(a)&&v.push(t.createTextNode($e.exec(a)[0])),!fe.tbody)for(a=\"table\"!==l||Ve.test(a)?\"<table>\"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],\"tbody\")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent=\"\";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,\"input\"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),\"script\"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||\"\")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){\"string\"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,\"table\")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,\"tr\")?e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\")):e}function C(e){return e.type=(null!==pe.find.attr(e,\"type\"))+\"/\"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r<i;r++)pe.event.add(t,n,s[n][r])}a.data&&(a.data=pe.extend({},a.data))}}function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!fe.noCloneEvent&&t[pe.expando]){i=pe._data(t);for(r in i.events)pe.removeEvent(t,r,i.handle);t.removeAttribute(pe.expando)}\"script\"===n&&t.text!==e.text?(C(t).text=e.text,E(t)):\"object\"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),fe.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):\"input\"===n&&Be.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):\"option\"===n?t.defaultSelected=t.selected=e.defaultSelected:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}}function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-1,p=t[0],g=pe.isFunction(p);if(g||f>1&&\"string\"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,\"script\"),C),a=s.length;c<f;c++)o=l,c!==d&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,\"script\"))),n.call(e[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,pe.map(s,E),c=0;c<a;c++)o=s[c],Ie.test(o.type||\"\")&&!pe._data(o,\"globalEval\")&&pe.contains(u,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||\"\").replace(ot,\"\")));l=i=null}return e}function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||pe.cleanData(h(r)),r.parentNode&&(n&&pe.contains(r.ownerDocument,r)&&g(h(r,\"script\")),r.parentNode.removeChild(r));return e}function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n[0],\"display\");return n.detach(),r}function j(e){var t=re,n=lt[e];return n||(n=D(e,t),\"none\"!==n&&n||(ut=(ut||pe(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style&&(o[a]=pe._data(r,\"olddisplay\"),n=r.style.display,t?(o[a]||\"none\"!==n||(r.style.display=\"\"),\"\"===r.style.display&&Re(r)&&(o[a]=pe._data(r,\"olddisplay\",j(r.nodeName)))):(i=Re(r),(n&&\"none\"!==n||!i)&&pe._data(r,\"olddisplay\",i?n:pe.css(r,\"display\"))));for(a=0;a<s;a++)r=e[a],r.style&&(t&&\"none\"!==r.style.display&&\"\"!==r.style.display||(r.style.display=t?o[a]||\"\":\"none\"));return e}function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||\"px\"):t}function F(e,t,n,r,i){for(var o=n===(r?\"border\":\"content\")?4:\"width\"===t?1:0,a=0;o<4;o+=2)\"margin\"===n&&(a+=pe.css(e,n+Oe[o],!0,i)),r?(\"content\"===n&&(a-=pe.css(e,\"padding\"+Oe[o],!0,i)),\"margin\"!==n&&(a-=pe.css(e,\"border\"+Oe[o]+\"Width\",!0,i))):(a+=pe.css(e,\"padding\"+Oe[o],!0,i),\"padding\"!==n&&(a+=pe.css(e,\"border\"+Oe[o]+\"Width\",!0,i)));return a}function M(t,n,r){var i=!0,o=\"width\"===n?t.offsetWidth:t.offsetHeight,a=ht(t),s=fe.boxSizing&&\"border-box\"===pe.css(t,\"boxSizing\",!1,a);if(re.msFullscreenElement&&e.top!==e&&t.getClientRects().length&&(o=Math.round(100*t.getBoundingClientRect()[n])),o<=0||null==o){if(o=gt(t,n,a),(o<0||null==o)&&(o=t.style[n]),ft.test(o))return o;i=s&&(fe.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+F(t,n,r||(s?\"border\":\"content\"),i,a)+\"px\"}function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[\"margin\"+n]=r[\"padding\"+n]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType&&Re(e),g=pe._data(e,\"fxshow\");n.queue||(s=pe._queueHooks(e,\"fx\"),null==s.unqueued&&(s.unqueued=0,u=s.empty.fire,s.empty.fire=function(){s.unqueued||u()}),s.unqueued++,f.always(function(){f.always(function(){s.unqueued--,pe.queue(e,\"fx\").length||s.empty.fire()})})),1===e.nodeType&&(\"height\"in t||\"width\"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],l=pe.css(e,\"display\"),c=\"none\"===l?pe._data(e,\"olddisplay\")||j(e.nodeName):l,\"inline\"===c&&\"none\"===pe.css(e,\"float\")&&(fe.inlineBlockNeedsLayout&&\"inline\"!==j(e.nodeName)?p.zoom=1:p.display=\"inline-block\")),n.overflow&&(p.overflow=\"hidden\",fe.shrinkWrapBlocks()||f.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],St.exec(i)){if(delete t[r],o=o||\"toggle\"===i,i===(h?\"hide\":\"show\")){if(\"show\"!==i||!g||void 0===g[r])continue;h=!0}d[r]=g&&g[r]||pe.style(e,r)}else l=void 0;if(pe.isEmptyObject(d))\"inline\"===(\"none\"===l?j(e.nodeName):l)&&(p.display=l);else{g?\"hidden\"in g&&(h=g.hidden):g=pe._data(e,\"fxshow\",{}),o&&(g.hidden=!h),h?pe(e).show():f.done(function(){pe(e).hide()}),f.done(function(){var t;pe._removeData(e,\"fxshow\");for(t in d)pe.style(e,t,d[t])});for(r in d)a=B(h?g[r]:0,r,f),r in g||(g[r]=a.start,h&&(a.end=a.start,a.start=\"width\"===r||\"height\"===r?1:0))}}function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e[n],pe.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=pe.cssHooks[r],a&&\"expand\"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Nt||R(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;a<u;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),o<1&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:pe.extend({},t),opts:pe.extend(!0,{specialEasing:{},easing:pe.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||R(),duration:n.duration,tweens:[],createTween:function(t,n){var r=pe.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(I(c,l.opts.specialEasing);o<a;o++)if(r=$.prefilters[o].call(l,e,c,l.opts))return pe.isFunction(r.stop)&&(pe._queueHooks(l.elem,l.opts.queue).stop=pe.proxy(r.stop,r)),r;return pe.map(c,B,l),pe.isFunction(l.opts.start)&&l.opts.start.call(e,l),pe.fx.timer(pe.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function z(e){return pe.attr(e,\"class\")||\"\"}function X(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(De)||[];if(pe.isFunction(n))for(;r=o[i++];)\"+\"===r.charAt(0)?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||a||o[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),i(l),!1)}),u}var o={},a=e===Qt;return i(t.dataTypes[0])||!o[\"*\"]&&i(\"*\")}function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&pe.extend(!0,e,n),e}function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(i)for(a in s)if(s[a]&&s[a].test(i)){u.unshift(a);break}if(u[0]in n)o=u[0];else{for(a in n){if(!u[0]||e.converters[a+\" \"+u[0]]){o=a;break}r||(r=a)}o=o||r}if(o)return o!==u[0]&&u.unshift(o),n[o]}function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(a=l[u+\" \"+o]||l[\"* \"+o],!a)for(i in l)if(s=i.split(\" \"),s[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){a===!0?a=l[i]:l[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(f){return{state:\"parsererror\",error:a?f:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}function G(e){return e.style&&e.style.display||pe.css(e,\"display\")}function K(e){for(;e&&1===e.nodeType;){if(\"none\"===G(e)||\"hidden\"===e.type)return!0;e=e.parentNode}return!1}function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn.test(e)?r(e,i):Q(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==pe.type(t))r(e,t);else for(i in t)Q(e+\"[\"+i+\"]\",t[i],n,r)}function Z(){try{return new e.XMLHttpRequest}catch(t){}}function ee(){try{return new e.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(t){}}function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}var ne=[],re=e.document,ie=ne.slice,oe=ne.concat,ae=ne.push,se=ne.indexOf,ue={},le=ue.toString,ce=ue.hasOwnProperty,fe={},de=\"1.12.3\",pe=function(e,t){return new pe.fn.init(e,t)},he=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,ge=/^-ms-/,me=/-([\\da-z])/gi,ye=function(e,t){return t.toUpperCase()};pe.fn=pe.prototype={jquery:de,constructor:pe,selector:\"\",length:0,toArray:function(){return ie.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:ie.call(this)},pushStack:function(e){var t=pe.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return pe.each(this,e)},map:function(e){return this.pushStack(pe.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(ie.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ae,sort:ne.sort,splice:ne.splice},pe.extend=pe.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||pe.isFunction(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(l&&n&&(pe.isPlainObject(n)||(t=pe.isArray(n)))?(t?(t=!1,o=e&&pe.isArray(e)?e:[]):o=e&&pe.isPlainObject(e)?e:{},a[r]=pe.extend(l,o,n)):void 0!==n&&(a[r]=n));return a},pe.extend({expando:\"jQuery\"+(de+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\"function\"===pe.type(e)},isArray:Array.isArray||function(e){return\"array\"===pe.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!pe.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||\"object\"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,\"constructor\")&&!ce.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?ue[le.call(e)]||\"object\":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,\"ms-\").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;i<r&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(he,\"\")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?pe.merge(r,\"string\"==typeof e?[e]:e):ae.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(se)return se.call(t,e,n);for(r=t.length,n=n?n<0?Math.max(0,r+n):n:0;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,r){var i,o,a=0,s=[];if(n(e))for(i=e.length;a<i;a++)o=t(e[a],a,r),null!=o&&s.push(o);else for(a in e)o=t(e[a],a,r),null!=o&&s.push(o);return oe.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if(\"string\"==typeof t&&(i=e[t],t=e,e=i),pe.isFunction(e))return n=ie.call(arguments,2),r=function(){return e.apply(t||this,n.concat(ie.call(arguments)))},r.guid=e.guid=e.guid||pe.guid++,r},now:function(){return+new Date},support:fe}),\"function\"==typeof Symbol&&(pe.fn[Symbol.iterator]=ne[Symbol.iterator]),pe.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){ue[\"[object \"+t+\"]\"]=t.toLowerCase()});var ve=function(e){function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],\"string\"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&((t?t.ownerDocument||t:B)!==H&&L(t),t=t||H,_)){if(11!==g&&(l=ye.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(w.qsa&&!X[e+\" \"]&&(!F||!F.test(e))){if(1!==g)h=t,p=e;else if(\"object\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\"id\"))?s=s.replace(xe,\"\\\\$&\"):t.setAttribute(\"id\",s=P),f=N(e),o=f.length,u=de.test(s)?\"#\"+s:\"[id='\"+s+\"']\";o--;)f[o]=u+\" \"+d(f[o]);p=f.join(\",\"),h=ve.test(e)&&c(t.parentNode)||t}if(p)try{return Q.apply(n,h.querySelectorAll(p)),n}catch(m){}finally{s===P&&t.removeAttribute(\"id\")}}}return S(e.replace(se,\"$1\"),t,n,r)}function n(){function e(n,r){return t.push(n+\" \")>T.cacheLength&&delete e[t.shift()],e[n+\" \"]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement(\"div\");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split(\"|\"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return\"input\"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&\"parentNode\"===r,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[P]||(t[P]={}),u=l[t.uniqueID]||(l[t.uniqueID]={}),(s=u[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(u[r]=c,c[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r(function(r,a,s,u){var l,c,f,d=[],p=[],h=a.length,y=r||g(t||\"*\",s.nodeType?[s]:s,[]),v=!e||!r&&t?y:m(y,d,e,s,u),x=n?o||(r?e:h||i)?[]:a:v;if(n&&n(v,x,s,u),i)for(l=m(x,p),i(l,[],s,u),c=l.length;c--;)(f=l[c])&&(x[p[c]]=!(v[p[c]]=f));if(r){if(o||e){if(o){for(l=[],c=x.length;c--;)(f=x[c])&&l.push(v[c]=f);o(null,x=[],l,u)}for(c=x.length;c--;)(f=x[c])&&(l=o?ee(r,f):d[c])>-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[\" \"],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s<i;s++)if(n=T.relative[e[s].type])c=[p(h(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;r<i&&!T.relative[e[r].type];r++);return y(s>1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace(se,\"$1\"),n,s<r&&v(e.slice(s,r)),r<i&&v(e=e.slice(r)),r<i&&d(e))}c.push(n)}return h(c)}function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h=\"0\",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG(\"*\",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P=\"sizzle\"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},te=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",ne=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",re=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",ie=\"\\\\[\"+ne+\"*(\"+re+\")(?:\"+ne+\"*([*^$|!~]?=)\"+ne+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+re+\"))|)\"+ne+\"*\\\\]\",oe=\":(\"+re+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+ie+\")*)|.*)\\\\)|)\",ae=new RegExp(ne+\"+\",\"g\"),se=new RegExp(\"^\"+ne+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+ne+\"+$\",\"g\"),ue=new RegExp(\"^\"+ne+\"*,\"+ne+\"*\"),le=new RegExp(\"^\"+ne+\"*([>+~]|\"+ne+\")\"+ne+\"*\"),ce=new RegExp(\"=\"+ne+\"*([^\\\\]'\\\"]*?)\"+ne+\"*\\\\]\",\"g\"),fe=new RegExp(oe),de=new RegExp(\"^\"+re+\"$\"),pe={ID:new RegExp(\"^#(\"+re+\")\"),CLASS:new RegExp(\"^\\\\.(\"+re+\")\"),TAG:new RegExp(\"^(\"+re+\"|[*])\"),ATTR:new RegExp(\"^\"+ie),PSEUDO:new RegExp(\"^\"+oe),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+ne+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+ne+\"*(?:([+-]|)\"+ne+\"*(\\\\d+)|))\"+ne+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+te+\")$\",\"i\"),needsContext:new RegExp(\"^\"+ne+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+ne+\"*((?:-\\\\d)?\\\\d*)\"+ne+\"*\\\\)|)(?=[^-]|$)\",\"i\")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\\d$/i,me=/^[^{]+\\{\\s*\\[native \\w/,ye=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ve=/[+~]/,xe=/'|\\\\/g,be=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+ne+\"?|(\"+ne+\")|.)\",\"ig\"),we=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",Te,!1):n.attachEvent&&n.attachEvent(\"onunload\",Te)),w.attributes=i(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute(\"id\")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML=\"<a id='\"+P+\"'></a><select id='\"+P+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&F.push(\"[*^$]=\"+ne+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||F.push(\"\\\\[\"+ne+\"*(?:value|\"+te+\")\"),e.querySelectorAll(\"[id~=\"+P+\"-]\").length||F.push(\"~=\"),e.querySelectorAll(\":checked\").length||F.push(\":checked\"),e.querySelectorAll(\"a#\"+P+\"+*\").length||F.push(\".#.+[+~]\")}),i(function(e){var t=H.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&F.push(\"name\"+ne+\"*[*^$|!~]?=\"),e.querySelectorAll(\":enabled\").length||F.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),F.push(\",.*:\")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,\"div\"),O.call(e,\"[s!='']:x\"),M.push(\"!=\",oe)}),F=F.length&&new RegExp(F.join(\"|\")),M=M.length&&new RegExp(M.join(\"|\")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,\"='$1']\"),w.matchesSelector&&_&&!X[n+\" \"]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||\"\").replace(be,we),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+\" \"];return t||(t=new RegExp(\"(^|\"+ne+\")\"+e+\"(\"+ne+\"|$)\"))&&$(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?\"!=\"===n:!n||(o+=\"\",\"=\"===n?o===r:\"!=\"===n?o!==r:\"^=\"===n?r&&0===o.indexOf(r):\"*=\"===n?r&&o.indexOf(r)>-1:\"$=\"===n?r&&o.slice(-r.length)===r:\"~=\"===n?(\" \"+o.replace(ae,\" \")+\" \").indexOf(r)>-1:\"|=\"===n&&(o===r||o.slice(0,r.length+1)===r+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?\"nextSibling\":\"previousSibling\",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),\nl=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error(\"unsupported pseudo: \"+e);return o[P]?o(n):o.length>1?(i=[e,e,\"\",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,\"$1\"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||\"\")||t.error(\"unsupported lang: \"+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+\"-\");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[b]=s(b);for(b in{submit:!0,reset:!0})T.pseudos[b]=u(b);return f.prototype=T.filters=T.pseudos,T.setFilters=new f,N=t.tokenize=function(e,n){var r,i,o,a,s,u,l,c=z[e+\" \"];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(i=ue.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=le.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se,\" \")}),s=s.slice(r.length));for(a in T.filter)!(i=pe[a].exec(s))||l[a]&&!(i=l[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},k=t.compile=function(e,t){var n,r=[],i=[],o=X[e+\" \"];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=v(t[n]),o[P]?r.push(o):i.push(o);o=X(e,x(i,r)),o.selector=e}return o},S=t.select=function(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,f=!r&&N(e=l.selector||e);if(n=n||[],1===f.length){if(o=f[0]=f[0].slice(0),o.length>2&&\"ID\"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split(\"\").sort(U).join(\"\")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement(\"div\"))}),i(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||o(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||o(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute(\"disabled\")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[\":\"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/,Ce=/^.[^:#\\[\\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if(\"string\"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t<i;t++)if(pe.contains(r[t],this))return!0}));for(t=0;t<i;t++)pe.find(e,r[t],n);return n=this.pushStack(i>1?pe.unique(n):n),n.selector=this.selector?this.selector+\" \"+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,\"string\"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,\"string\"==typeof e){if(r=\"<\"===e.charAt(0)&&\">\"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?\"undefined\"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(pe.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=we.test(e)||\"string\"!=typeof e?pe(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,\"parentNode\")},parentsUntil:function(e,t,n){return xe(e,\"parentNode\",n)},next:function(e){return i(e,\"nextSibling\")},prev:function(e){return i(e,\"previousSibling\")},nextAll:function(e){return xe(e,\"nextSibling\")},prevAll:function(e){return xe(e,\"previousSibling\")},nextUntil:function(e,t,n){return xe(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return xe(e,\"previousSibling\",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,\"iframe\")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\\S+/g;pe.Callbacks=function(e){e=\"string\"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u<a.length;)a[u].apply(n[0],n[1])===!1&&e.stopOnFalse&&(u=a.length,n=!1);e.memory||(n=!1),t=!1,i&&(a=n?[]:\"\")},c={add:function(){return a&&(n&&!t&&(u=a.length-1,s.push(n)),function r(t){pe.each(t,function(t,n){pe.isFunction(n)?e.unique&&c.has(n)||a.push(n):n&&n.length&&\"string\"!==pe.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return pe.each(arguments,function(e,t){for(var n;(n=pe.inArray(t,a,n))>-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n=\"\",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[[\"resolve\",\"done\",pe.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",pe.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",pe.Callbacks(\"memory\")]],n=\"pending\",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+\"With\"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+\"With\"](this===i?r:this,arguments),this},i[o[0]+\"With\"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i<a;i++)o[i]&&pe.isFunction(o[i].promise)?o[i].promise().progress(l(i,n,t)).done(l(i,r,o)).fail(u.reject):--s;return s||u.resolveWith(r,o),u.promise()}});var je;pe.fn.ready=function(e){return pe.ready.promise().done(e),this},pe.extend({isReady:!1,readyWait:1,holdReady:function(e){e?pe.readyWait++:pe.ready(!0)},ready:function(e){(e===!0?--pe.readyWait:pe.isReady)||(pe.isReady=!0,e!==!0&&--pe.readyWait>0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler(\"ready\"),pe(re).off(\"ready\"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),\"complete\"===re.readyState||\"loading\"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener(\"DOMContentLoaded\",s),e.addEventListener(\"load\",s);else{re.attachEvent(\"onreadystatechange\",s),e.attachEvent(\"onload\",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll(\"left\")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst=\"0\"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName(\"body\")[0],n&&n.style&&(t=re.createElement(\"div\"),r=re.createElement(\"div\"),r.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",n.appendChild(r).appendChild(t),\"undefined\"!=typeof t.style.zoom&&(t.style.cssText=\"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement(\"div\");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+\" \").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute(\"classid\")===t)},qe=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{\"applet \":!0,\"embed \":!0,\"object \":\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,\"parsedAttrs\"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf(\"data-\")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,\"parsedAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks(\"once memory\").add(function(){pe._removeData(e,t+\"queue\"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?pe.queue(this[0],e):void 0===t?this:this.each(function(){var n=pe.queue(this,e,t);pe._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&pe.dequeue(this,e)})},dequeue:function(e){return this.each(function(){pe.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=pe.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";a--;)n=pe._data(o[a],e+\"queueHooks\"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;fe.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=re.getElementsByTagName(\"body\")[0],n&&n.style?(t=re.createElement(\"div\"),r=re.createElement(\"div\"),r.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",n.appendChild(r).appendChild(t),\"undefined\"!=typeof t.style.zoom&&(t.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1\",t.appendChild(re.createElement(\"div\")).style.width=\"5px\",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Fe=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,Me=new RegExp(\"^(?:([+-])=|)(\"+Fe+\")([a-z%]*)$\",\"i\"),Oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],Re=function(e,t){return e=t||e,\"none\"===pe.css(e,\"display\")||!pe.contains(e.ownerDocument,e)},Pe=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===pe.type(n)){i=!0;for(s in n)Pe(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,pe.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(pe(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},Be=/^(?:checkbox|radio)$/i,We=/<([\\w:-]+)/,Ie=/^$|\\/(?:java|ecma)script/i,$e=/^\\s+/,ze=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video\";!function(){var e=re.createElement(\"div\"),t=re.createDocumentFragment(),n=re.createElement(\"input\");e.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName(\"tbody\").length,fe.htmlSerialize=!!e.getElementsByTagName(\"link\").length,fe.html5Clone=\"<:nav></:nav>\"!==re.createElement(\"nav\").cloneNode(!0).outerHTML,n.type=\"checkbox\",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML=\"<textarea>x</textarea>\",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement(\"input\"),n.setAttribute(\"type\",\"radio\"),n.setAttribute(\"checked\",\"checked\"),n.setAttribute(\"name\",\"t\"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],area:[1,\"<map>\",\"</map>\"],param:[1,\"<object>\",\"</object>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:fe.htmlSerialize?[0,\"\",\"\"]:[1,\"X<div>\",\"</div>\"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\\w+;/,Ve=/<tbody/i;!function(){var t,n,r=re.createElement(\"div\");for(t in{submit:!0,change:!0,focusin:!0})n=\"on\"+t,(fe[t]=n in e)||(r.setAttribute(n,\"t\"),fe[t]=r.attributes[n].expando===!1);r=null}();var Ye=/^(?:input|select|textarea)$/i,Je=/^key/,Ge=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^(?:focusinfocus|focusoutblur)$/,Qe=/^([^.]*)(?:\\.(.+)|)/;pe.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe._data(e);if(m){for(n.handler&&(u=n,n=u.handler,i=u.selector),n.guid||(n.guid=pe.guid++),(a=m.events)||(a=m.events={}),(c=m.handle)||(c=m.handle=function(e){return\"undefined\"==typeof pe||e&&pe.event.triggered===e.type?void 0:pe.event.dispatch.apply(c.elem,arguments)},c.elem=e),t=(t||\"\").match(De)||[\"\"],s=t.length;s--;)o=Qe.exec(t[s])||[],p=g=o[1],h=(o[2]||\"\").split(\".\").sort(),p&&(l=pe.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=pe.event.special[p]||{},f=pe.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&pe.expr.match.needsContext.test(i),namespace:h.join(\".\")},u),(d=a[p])||(d=a[p]=[],d.delegateCount=0,l.setup&&l.setup.call(e,r,h,c)!==!1||(e.addEventListener?e.addEventListener(p,c,!1):e.attachEvent&&e.attachEvent(\"on\"+p,c))),l.add&&(l.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,f):d.push(f),pe.event.global[p]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe.hasData(e)&&pe._data(e);if(m&&(c=m.events)){for(t=(t||\"\").match(De)||[\"\"],l=t.length;l--;)if(s=Qe.exec(t[l])||[],p=g=s[1],h=(s[2]||\"\").split(\".\").sort(),p){for(f=pe.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=c[p]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),u=o=d.length;o--;)a=d[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&(\"**\"!==r||!a.selector)||(d.splice(o,1),a.selector&&d.delegateCount--,f.remove&&f.remove.call(e,a));u&&!d.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||pe.removeEvent(e,p,m.handle),delete c[p])}else for(p in c)pe.event.remove(e,p+t[l],n,r,!0);pe.isEmptyObject(c)&&(delete m.handle,pe._removeData(e,\"events\"))}},trigger:function(t,n,r,i){var o,a,s,u,l,c,f,d=[r||re],p=ce.call(t,\"type\")?t.type:t,h=ce.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=c=r=r||re,3!==r.nodeType&&8!==r.nodeType&&!Ke.test(p+pe.event.triggered)&&(p.indexOf(\".\")>-1&&(h=p.split(\".\"),p=h.shift(),h.sort()),a=p.indexOf(\":\")<0&&\"on\"+p,t=t[pe.expando]?t:new pe.Event(p,\"object\"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,\"events\")||{})[t.type]&&pe._data(s,\"handle\"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,\"events\")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&(\"click\"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||\"click\"!==e.type)){for(r=[],n=0;n<s;n++)o=t[n],i=o.selector+\" \",void 0===r[i]&&(r[i]=o.needsContext?pe(i,this).index(u)>-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[pe.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=Ge.test(i)?this.mouseHooks:Je.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new pe.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||re),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:\"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||re,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==b()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:\"focusin\"},blur:{trigger:function(){if(this===b()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(pe.nodeName(this,\"input\")&&\"checkbox\"===this.type&&this.click)return this.click(),!1},_default:function(e){return pe.nodeName(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=pe.extend(new pe.Event,n,{type:e,isSimulated:!0});pe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},pe.removeEvent=re.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r=\"on\"+t;e.detachEvent&&(\"undefined\"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},pe.Event=function(e,t){return this instanceof pe.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?v:x):this.type=e,t&&pe.extend(this,t),this.timeStamp=e&&e.timeStamp||pe.now(),void(this[pe.expando]=!0)):new pe.Event(e,t)},pe.Event.prototype={constructor:pe.Event,isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=v,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=v,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=v,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},pe.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){pe.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||pe.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),fe.submit||(pe.event.special.submit={setup:function(){return!pe.nodeName(this,\"form\")&&void pe.event.add(this,\"click._submit keypress._submit\",function(e){var t=e.target,n=pe.nodeName(t,\"input\")||pe.nodeName(t,\"button\")?pe.prop(t,\"form\"):void 0;n&&!pe._data(n,\"submit\")&&(pe.event.add(n,\"submit._submit\",function(e){e._submitBubble=!0}),pe._data(n,\"submit\",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&pe.event.simulate(\"submit\",this.parentNode,e))},teardown:function(){return!pe.nodeName(this,\"form\")&&void pe.event.remove(this,\"._submit\")}}),fe.change||(pe.event.special.change={setup:function(){return Ye.test(this.nodeName)?(\"checkbox\"!==this.type&&\"radio\"!==this.type||(pe.event.add(this,\"propertychange._change\",function(e){\"checked\"===e.originalEvent.propertyName&&(this._justChanged=!0)}),pe.event.add(this,\"click._change\",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),pe.event.simulate(\"change\",this,e)})),!1):void pe.event.add(this,\"beforeactivate._change\",function(e){var t=e.target;Ye.test(t.nodeName)&&!pe._data(t,\"change\")&&(pe.event.add(t,\"change._change\",function(e){!this.parentNode||e.isSimulated||e.isTrigger||pe.event.simulate(\"change\",this.parentNode,e)}),pe._data(t,\"change\",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||\"radio\"!==t.type&&\"checkbox\"!==t.type)return e.handleObj.handler.apply(this,arguments)},teardown:function(){return pe.event.remove(this,\"._change\"),!Ye.test(this.nodeName)}}),fe.focusin||pe.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){pe.event.simulate(t,e.target,pe.event.fix(e))};pe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=pe._data(r,t);i||r.addEventListener(e,n,!0),pe._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=pe._data(r,t)-1;i?pe._data(r,t,i):(r.removeEventListener(e,n,!0),pe._removeData(r,t))}}}),pe.fn.extend({on:function(e,t,n,r){return w(this,e,t,n,r)},one:function(e,t,n,r){return w(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,pe(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return t!==!1&&\"function\"!=typeof t||(n=t,t=void 0),n===!1&&(n=x),this.each(function(){pe.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){pe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return pe.event.trigger(e,t,n,!0)}});var Ze=/ jQuery\\d+=\"(?:null|\\d+)\"/g,et=new RegExp(\"<(?:\"+ze+\")[\\\\s/>]\",\"i\"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,nt=/<script|<style|<link/i,rt=/checked\\s*(?:[^=]|=\\s*.checked.)/i,it=/^true\\/(.*)/,ot=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,at=p(re),st=at.appendChild(re.createElement(\"div\"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test(\"<\"+e.nodeName+\">\")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,\"script\"),r.length>0&&g(r,!u&&h(e,\"script\")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||\"undefined\"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,\"select\")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,\"\"):void 0;if(\"string\"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(pe.cleanData(h(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return S(this,arguments,function(t){var n=this.parentNode;pe.inArray(this,e)<0&&(pe.cleanData(h(this)),\nn&&n.replaceChild(t,this))},e)}}),pe.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){pe.fn[e]=function(e){for(var n,r=0,i=[],o=pe(e),a=o.length-1;r<=a;r++)n=r===a?this:this.clone(!0),pe(o[r])[t](n),ae.apply(i,n.get());return this.pushStack(i)}});var ut,lt={HTML:\"block\",BODY:\"block\"},ct=/^margin/,ft=new RegExp(\"^(\"+Fe+\")(?!px)[a-z%]+$\",\"i\"),dt=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i},pt=re.documentElement;!function(){function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssText=\"-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",n=i=s=!1,r=a=!0,e.getComputedStyle&&(c=e.getComputedStyle(l),n=\"1%\"!==(c||{}).top,s=\"2px\"===(c||{}).marginLeft,i=\"4px\"===(c||{width:\"4px\"}).width,l.style.marginRight=\"50%\",r=\"4px\"===(c||{marginRight:\"4px\"}).marginRight,t=l.appendChild(re.createElement(\"div\")),t.style.cssText=l.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",t.style.marginRight=t.style.width=\"0\",l.style.width=\"1px\",a=!parseFloat((e.getComputedStyle(t)||{}).marginRight),l.removeChild(t)),l.style.display=\"none\",o=0===l.getClientRects().length,o&&(l.style.display=\"\",l.innerHTML=\"<table><tr><td></td><td>t</td></tr></table>\",t=l.getElementsByTagName(\"td\"),t[0].style.cssText=\"margin:0;border:0;padding:0;display:none\",o=0===t[0].offsetHeight,o&&(t[0].style.display=\"\",t[1].style.display=\"none\",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement(\"div\"),l=re.createElement(\"div\");l.style&&(l.style.cssText=\"float:left;opacity:.5\",fe.opacity=\"0.5\"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",fe.clearCloneStyle=\"content-box\"===l.style.backgroundClip,u=re.createElement(\"div\"),u.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",l.innerHTML=\"\",u.appendChild(l),fe.boxSizing=\"\"===l.style.boxSizing||\"\"===l.style.MozBoxSizing||\"\"===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,\"\"!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+\"\"}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left=\"fontSize\"===t?\"1em\":a,a=s.pixelLeft+\"px\",s.left=r,o&&(i.left=o)),void 0===a?a:a+\"\"||\"auto\"});var yt=/alpha\\([^)]*\\)/i,vt=/opacity\\s*=\\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp(\"^(\"+Fe+\")(.*)$\",\"i\"),wt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Tt={letterSpacing:\"0\",fontWeight:\"400\"},Ct=[\"Webkit\",\"O\",\"Moz\",\"ms\"],Et=re.createElement(\"div\").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":fe.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,\"string\"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o=\"number\"),null!=n&&n===n&&(\"number\"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?\"\":\"px\")),fe.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(u[t]=\"inherit\"),!(a&&\"set\"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&\"get\"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),\"normal\"===o&&t in Tt&&(o=Tt[t]),\"\"===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each([\"height\",\"width\"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,\"display\"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&\"border-box\"===pe.css(e,\"boxSizing\",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":t?\"1\":\"\"},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?\"alpha(opacity=\"+100*t+\")\":\"\",o=r&&r.filter||n.filter||\"\";n.zoom=1,(t>=1||\"\"===t)&&\"\"===pe.trim(o.replace(yt,\"\"))&&n.removeAttribute&&(n.removeAttribute(\"filter\"),\"\"===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+\" \"+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:\"inline-block\"},gt,[e,\"marginRight\"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,\"marginLeft\"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+\"px\"}),pe.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a<i;a++)o[t[a]]=pe.css(e,t[a],!1,r);return o}return void 0!==n?pe.style(e,t,n):pe.css(e,t)},e,t,arguments.length>1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?\"\":\"px\")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,\"\"),t&&\"auto\"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=[\"*\"]):e=e.match(De);for(var n,r=0,i=e.length;r<i;r++)n=e[r],$.tweeners[n]=$.tweeners[n]||[],$.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?$.prefilters.unshift(e):$.prefilters.push(e)}}),pe.speed=function(e,t,n){var r=e&&\"object\"==typeof e?pe.extend({},e):{complete:n||!n&&t||pe.isFunction(e)&&e,duration:e,easing:n&&t||t&&!pe.isFunction(t)&&t};return r.duration=pe.fx.off?0:\"number\"==typeof r.duration?r.duration:r.duration in pe.fx.speeds?pe.fx.speeds[r.duration]:pe.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){pe.isFunction(r.old)&&r.old.call(this),r.queue&&pe.dequeue(this,r.queue)},r},pe.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Re).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=pe.isEmptyObject(e),o=pe.speed(t,n,r),a=function(){var t=$(this,pe.extend({},e),o);(i||pe._data(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=pe.timers,a=pe._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&At.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||pe.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||\"fx\"),this.each(function(){var t,n=pe._data(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=pe.timers,a=r?r.length:0;for(n.finish=!0,pe.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),pe.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=pe.fn[t];pe.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(P(t,!0),e,r,i)}}),pe.each({slideDown:P(\"show\"),slideUp:P(\"hide\"),slideToggle:P(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){pe.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),pe.timers=[],pe.fx.tick=function(){var e,t=pe.timers,n=0;for(Nt=pe.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||pe.fx.stop(),Nt=void 0},pe.fx.timer=function(e){pe.timers.push(e),e()?pe.fx.start():pe.timers.pop()},pe.fx.interval=13,pe.fx.start=function(){kt||(kt=e.setInterval(pe.fx.tick,pe.fx.interval))},pe.fx.stop=function(){e.clearInterval(kt),kt=null},pe.fx.speeds={slow:600,fast:200,_default:400},pe.fn.delay=function(t,n){return t=pe.fx?pe.fx.speeds[t]||t:t,n=n||\"fx\",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e,t=re.createElement(\"input\"),n=re.createElement(\"div\"),r=re.createElement(\"select\"),i=r.appendChild(re.createElement(\"option\"));n=re.createElement(\"div\"),n.setAttribute(\"className\",\"t\"),n.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",e=n.getElementsByTagName(\"a\")[0],t.setAttribute(\"type\",\"checkbox\"),n.appendChild(t),e=n.getElementsByTagName(\"a\")[0],e.style.cssText=\"top:1px\",fe.getSetAttribute=\"t\"!==n.className,fe.style=/top/.test(e.getAttribute(\"style\")),fe.hrefNormalized=\"/a\"===e.getAttribute(\"href\"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement(\"form\").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement(\"input\"),t.setAttribute(\"value\",\"\"),fe.input=\"\"===t.getAttribute(\"value\"),t.value=\"t\",t.setAttribute(\"type\",\"radio\"),fe.radioValue=\"t\"===t.value}();var Dt=/\\r/g,jt=/[\\x20\\t\\r\\n\\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i=\"\":\"number\"==typeof i?i+=\"\":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?\"\":e+\"\"})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:(n=i.value,\"string\"==typeof n?n.replace(Dt,\"\"):null==n?\"\":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,\"value\");return null!=t?t:pe.trim(pe.text(e)).replace(jt,\" \")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o=\"select-one\"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&(fe.optDisabled?!n.disabled:null===n.getAttribute(\"disabled\"))&&(!n.parentNode.disabled||!pe.nodeName(n.parentNode,\"optgroup\"))){if(t=pe(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=pe.makeArray(t),a=i.length;a--;)if(r=i[a],pe.inArray(pe.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each([\"radio\",\"checkbox\"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&\"radio\"===t&&pe.nodeName(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase(\"default-\"+n)]=e[r]=!1:pe.attr(e,n,\"\"),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase(\"default-\"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase(\"default-\"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,\"input\")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+=\"\",\"value\"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&\"\"!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,\"\"!==t&&t,n)}},pe.each([\"width\",\"height\"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(\"\"===n)return e.setAttribute(t,\"auto\"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+\"\"}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,\"tabindex\");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),fe.hrefNormalized||pe.each([\"href\",\"src\"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype=\"encoding\");var Pt=/[\\t\\r\\n\\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if(\"string\"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(\" \"+i+\" \").replace(Pt,\" \")){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");s=pe.trim(r),i!==s&&pe.attr(n,\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(\" \"+i+\" \").replace(Pt,\" \")){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");s=pe.trim(r),i!==s&&pe.attr(n,\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e;return\"boolean\"==typeof t&&\"string\"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if(\"string\"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&\"boolean\"!==n||(t=z(this),t&&pe._data(this,\"__className__\",t),pe.attr(this,\"class\",t||e===!1?\"\":pe._data(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+z(n)+\" \").replace(Pt,\" \").indexOf(t)>-1)return!0;return!1}}),pe.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\\?/,$t=/(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+\"\");var n,r=null,i=pe.trim(t+\"\");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,\"\")}))?Function(\"return \"+i)():pe.error(\"Invalid JSON: \"+t)},pe.parseXML=function(t){var n,r;if(!t||\"string\"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,\"text/xml\")):(n=new e.ActiveXObject(\"Microsoft.XMLDOM\"),n.async=\"false\",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName(\"parsererror\").length||pe.error(\"Invalid XML: \"+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\\/\\//,Gt=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,Kt={},Qt={},Zt=\"*/\".concat(\"*\"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:\"GET\",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Zt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":pe.parseJSON,\"text xml\":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||\"\",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader(\"Last-Modified\"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader(\"etag\"),w&&(pe.etag[a]=w)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+\"\",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?\"ajaxSuccess\":\"ajaxError\",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger(\"ajaxComplete\",[T,d]),--pe.active||pe.event.trigger(\"ajaxStop\")))}\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks(\"once memory\"),y=d.statusCode||{},v={},x={},b=0,w=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+\"\").replace(zt,\"\").replace(Jt,tn[1]+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||\"*\").toLowerCase().match(De)||[\"\"],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||(\"http:\"===i[1]?\"80\":\"443\"))===(tn[3]||(\"http:\"===tn[1]?\"80\":\"443\")))),d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?\"&\":\"?\")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,\"$1_=\"+Wt++):a+(It.test(a)?\"&\":\"?\")+\"_=\"+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader(\"If-Modified-Since\",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader(\"If-None-Match\",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader(\"Content-Type\",d.contentType),T.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Zt+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w=\"abort\";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger(\"ajaxSend\",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort(\"timeout\")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,\"No Transport\");return T},getJSON:function(e,t,n){return pe.get(e,t,n,\"json\")},getScript:function(e,t){return pe.get(e,void 0,t,\"script\")}}),pe.each([\"get\",\"post\"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,\"body\")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\\[\\]$/,on=/\\r?\\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?\"\":t,r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join(\"&\").replace(nn,\"+\")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,\"elements\");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(\":disabled\")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,\"\\r\\n\")}}):{name:t.name,value:n.replace(on,\"\\r\\n\")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent(\"onunload\",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&\"withCredentials\"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r[\"X-Requested-With\"]||(r[\"X-Requested-With\"]=\"XMLHttpRequest\");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+\"\");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,\"string\"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=\"\"}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\",e.global=!1)}),pe.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n=re.head||pe(\"head\")[0]||re.documentElement;return{send:function(r,i){t=re.createElement(\"script\"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,\"success\"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\\?(?=&|$)|\\?\\?/;pe.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=fn.pop()||pe.expando+\"_\"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&dn.test(t.data)&&\"data\");if(s||\"jsonp\"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,\"$1\"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return a||pe.error(i+\" was not called\"),a[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),\"script\"}),pe.parseHTML=function(e,t,n){if(!e||\"string\"!=typeof e)return null;\"boolean\"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if(\"string\"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&pe.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?pe(\"<div>\").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,\"position\"),f=pe(e),d={};\"static\"===c&&(e.style.position=\"relative\"),s=f.offset(),o=pe.css(e,\"top\"),u=pe.css(e,\"left\"),l=(\"absolute\"===c||\"fixed\"===c)&&pe.inArray(\"auto\",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),\"using\"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?(\"undefined\"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return\"fixed\"===pe.css(r,\"position\")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],\"html\")||(n=e.offset()),n.top+=pe.css(e[0],\"borderTopWidth\",!0),n.left+=pe.css(e[0],\"borderLeftWidth\",!0)),{top:t.top-n.top-pe.css(r,\"marginTop\",!0),left:t.left-n.left-pe.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){\nfor(var e=this.offsetParent;e&&!pe.nodeName(e,\"html\")&&\"static\"===pe.css(e,\"position\");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each([\"top\",\"left\"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+\"px\":n})}),pe.each({Height:\"height\",Width:\"width\"},function(e,t){pe.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||\"boolean\"!=typeof r),a=n||(r===!0||i===!0?\"margin\":\"border\");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement[\"client\"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body[\"scroll\"+e],i[\"scroll\"+e],t.body[\"offset\"+e],i[\"offset\"+e],i[\"client\"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e(\"jquery\",pe)}),pe});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/laydate.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(){\"use strict\";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if(\"interactive\"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName(\"head\")[0],o=document.createElement(\"link\");\"string\"==typeof a&&(i=a);var s=(i||e).replace(/\\.|\\//g,\"\"),l=\"layuicss-\"+s,d=0;o.rel=\"stylesheet\",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),\"function\"==typeof a&&!function c(){return++d>80?window.console&&console.error(\"laydate.css: Invalid\"):void(1989===parseInt(t.getStyle(document.getElementById(l),\"width\"))?a():setTimeout(c,100))}()}}},n={v:\"5.0.9\",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i=\"laydate\",r=\"\",o=(e?\"modules/laydate/\":\"theme/\")+\"default/laydate.css?v=\"+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i=\"laydate\",r=\".layui-laydate\",o=\"layui-this\",s=\"laydate-disabled\",l=\"开始日期超出了结束日期<br>建议重新选择\",d=[100,2e5],c=\"layui-laydate-static\",m=\"layui-laydate-list\",u=\"laydate-selected\",h=\"layui-laydate-hint\",y=\"laydate-day-prev\",f=\"laydate-day-next\",p=\"layui-laydate-footer\",g=\".laydate-btns-confirm\",v=\"laydate-time-text\",D=\".laydate-btns-time\",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n=\"object\"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t<n.length;t++)this.push(n[t])};C.prototype=[],C.prototype.constructor=C,w.extend=function(){var e=1,t=arguments,n=function(e,t){e=e||(t.constructor===Array?[]:{});for(var a in t)e[a]=t[a]&&t[a].constructor===Object?n(e[a],t[a]):t[a];return e};for(t[0]=\"object\"==typeof t[0]?t[0]:{};e<t.length;e++)\"object\"==typeof t[e]&&n(t[0],t[e]);return t[0]},w.ie=function(){var e=navigator.userAgent.toLowerCase();return!!(window.ActiveXObject||\"ActiveXObject\"in window)&&((e.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),w.stope=function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},w.each=function(e,t){var n,a=this;if(\"function\"!=typeof t)return a;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return a},w.digit=function(e,t,n){var a=\"\";e=String(e),t=t||2;for(var i=e.length;i<t;i++)a+=\"0\";return e<Math.pow(10,t)?a+(0|e):e},w.elem=function(e,t){var n=document.createElement(e);return w.each(t||{},function(e,t){n.setAttribute(e,t)}),n},C.addStr=function(e,t){return e=e.replace(/\\s+/,\" \"),t=t.replace(/\\s+/,\" \").split(\" \"),w.each(t,function(t,n){new RegExp(\"\\\\b\"+n+\"\\\\b\").test(e)||(e=e+\" \"+n)}),e.replace(/^\\s|\\s$/,\"\")},C.removeStr=function(e,t){return e=e.replace(/\\s+/,\" \"),t=t.replace(/\\s+/,\" \").split(\" \"),w.each(t,function(t,n){var a=new RegExp(\"\\\\b\"+n+\"\\\\b\");a.test(e)&&(e=e.replace(a,\"\"))}),e.replace(/\\s+/,\" \").replace(/^\\s|\\s$/,\"\")},C.prototype.find=function(e){var t=this,n=0,a=[],i=\"object\"==typeof e;return this.each(function(r,o){for(var s=i?[e]:o.querySelectorAll(e||null);n<s.length;n++)a.push(s[n]);t.shift()}),i||(t.selector=(t.selector?t.selector+\" \":\"\")+e),w.each(a,function(e,n){t.push(n)}),t},C.prototype.each=function(e){return w.each.call(this,this,e)},C.prototype.addClass=function(e,t){return this.each(function(n,a){a.className=C[t?\"removeStr\":\"addStr\"](a.className,e)})},C.prototype.removeClass=function(e){return this.addClass(e,!0)},C.prototype.hasClass=function(e){var t=!1;return this.each(function(n,a){new RegExp(\"\\\\b\"+e+\"\\\\b\").test(a.className)&&(t=!0)}),t},C.prototype.attr=function(e,t){var n=this;return void 0===t?function(){if(n.length>0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){\"object\"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent(\"on\"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent(\"on\"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:\"date\",range:!1,format:\"yyyy-MM-dd\",value:null,isInitValue:!0,min:\"1900-1-1\",max:\"2099-12-31\",trigger:\"focus\",show:!1,showBottom:!0,btns:[\"clear\",\"now\",\"confirm\"],lang:\"cn\",theme:\"default\",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],time:[\"时\",\"分\",\"秒\"],timeTips:\"选择时间\",startTime:\"开始时间\",endTime:\"结束时间\",dateTips:\"返回日期\",month:[\"一\",\"二\",\"三\",\"四\",\"五\",\"六\",\"七\",\"八\",\"九\",\"十\",\"十一\",\"十二\"],tools:{confirm:\"确定\",clear:\"清空\",now:\"现在\"}},en:{weeks:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],time:[\"Hours\",\"Minutes\",\"Seconds\"],timeTips:\"Select Time\",startTime:\"Start Time\",endTime:\"End Time\",dateTips:\"Select Date\",month:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],tools:{confirm:\"Confirm\",clear:\"Clear\",now:\"Now\"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n=\"yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s\",a=\"static\"===t.position,i={year:\"yyyy\",month:\"yyyy-MM\",date:\"yyyy-MM-dd\",time:\"HH:mm:ss\",datetime:\"yyyy-MM-dd HH:mm:ss\"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range=\"-\"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+\"|.\",\"g\"))||[],e.EXP_IF=\"\",e.EXP_SPLIT=\"\",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?\"\\\\d{\"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||\"\")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?\"1,4\":/^y$/.test(a)?\"1,308\":\"1,2\"}()+\"}\":\"\\\\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+\"(\"+i+\")\"}),e.EXP_IF=new RegExp(\"^\"+(t.range?e.EXP_IF+\"\\\\s\\\\\"+t.range+\"\\\\s\"+e.EXP_IF:e.EXP_IF)+\"$\"),e.EXP_SPLIT=new RegExp(\"^\"+e.EXP_SPLIT+\"$\",\"\"),e.isInput(t.elem[0])||\"focus\"===t.trigger&&(t.trigger=\"click\"),t.elem.attr(\"lay-key\")||(t.elem.attr(\"lay-key\",e.index),t.eventElem.attr(\"lay-key\",e.index)),t.mark=w.extend({},t.calendar&&\"cn\"===t.lang?{\"0-1-1\":\"元旦\",\"0-2-14\":\"情人\",\"0-3-8\":\"妇女\",\"0-3-12\":\"植树\",\"0-4-1\":\"愚人\",\"0-5-1\":\"劳动\",\"0-5-4\":\"青年\",\"0-6-1\":\"儿童\",\"0-9-10\":\"教师\",\"0-9-18\":\"国耻\",\"0-10-1\":\"国庆\",\"0-12-25\":\"圣诞\"}:{},t.mark),w.each([\"min\",\"max\"],function(e,n){var a=[],i=[];if(\"number\"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r<s?o+r*s:r:o);a=[l.getFullYear(),l.getMonth()+1,l.getDate()],r<s||(i=[l.getHours(),l.getMinutes(),l.getSeconds()])}else a=(t[n].match(/\\d+-\\d+-\\d+/)||[\"\"])[0].split(\"-\"),i=(t[n].match(/\\d+:\\d+:\\d+/)||[\"\"])[0].split(\":\");t[n]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|i[0],minutes:0|i[1],seconds:0|i[2]}}),e.elemID=\"layui-laydate\"+t.elem.attr(\"lay-key\"),(t.show||a)&&e.render(),a||e.events(),t.value&&t.isInitValue&&(t.value.constructor===Date?e.setValue(e.parse(0,e.systemDate(t.value))):e.setValue(t.value)))},T.prototype.render=function(){var e=this,t=e.config,n=e.lang(),a=\"static\"===t.position,i=e.elem=w.elem(\"div\",{id:e.elemID,\"class\":[\"layui-laydate\",t.range?\" layui-laydate-range\":\"\",a?\" \"+c:\"\",t.theme&&\"default\"!==t.theme&&!/^#/.test(t.theme)?\" laydate-theme-\"+t.theme:\"\"].join(\"\")}),r=e.elemMain=[],o=e.elemHeader=[],s=e.elemCont=[],l=e.table=[],d=e.footer=w.elem(\"div\",{\"class\":p});if(t.zIndex&&(i.style.zIndex=t.zIndex),w.each(new Array(2),function(e){if(!t.range&&e>0)return!0;var a=w.elem(\"div\",{\"class\":\"layui-laydate-header\"}),i=[function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-prev-y\"});return e.innerHTML=\"&#xe65a;\",e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-prev-m\"});return e.innerHTML=\"&#xe603;\",e}(),function(){var e=w.elem(\"div\",{\"class\":\"laydate-set-ym\"}),t=w.elem(\"span\"),n=w.elem(\"span\");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-next-m\"});return e.innerHTML=\"&#xe602;\",e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-next-y\"});return e.innerHTML=\"&#xe65b;\",e}()],d=w.elem(\"div\",{\"class\":\"layui-laydate-content\"}),c=w.elem(\"table\"),m=w.elem(\"thead\"),u=w.elem(\"tr\");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem(\"th\");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem(\"div\",{\"class\":\"layui-laydate-main laydate-main-list-\"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return\"datetime\"===t.type&&e.push('<span lay-type=\"datetime\" class=\"laydate-btns-time\">'+n.timeTips+\"</span>\"),w.each(t.btns,function(e,r){var o=n.tools[r]||\"btn\";t.range&&\"now\"===r||(a&&\"clear\"===r&&(o=\"cn\"===t.lang?\"重置\":\"Reset\"),i.push('<span lay-type=\"'+r+'\" class=\"laydate-btns-'+r+'\">'+o+\"</span>\"))}),e.push('<div class=\"laydate-footer-btns\">'+i.join(\"\")+\"</div>\"),e.join(\"\")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem(\"style\"),u=[\"#{{id}} .layui-laydate-header{background-color:{{theme}};}\",\"#{{id}} .layui-this{background-color:{{theme}} !important;}\"].join(\"\").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);\"styleSheet\"in m?(m.setAttribute(\"type\",\"text/css\"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass(\"laydate-theme-molv\"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,\"function\"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w(\"#\"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?\"scrollLeft\":\"scrollTop\",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?\"clientWidth\":\"clientHeight\"]},l=5,d=a.left,c=a.bottom;d+i+l>s(\"width\")&&(d=s(\"width\")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+(\"fixed\"===t.position?0:o(1))+\"px\",e.elem.style.top=c+(\"fixed\"===t.position?0:o())+\"px\"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem(\"div\",{\"class\":h}));t.elem&&(n.innerHTML=e||\"\",w(t.elem).find(\".\"+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find(\".\"+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?\"val\":\"html\",i.isInput(s)?s.value:\"static\"===r.position?\"\":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=[\"startTime\",\"endTime\"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length<l.length&&(a=!0),/yyyy|y/.test(l)?(c<d[0]&&(c=d[0],a=!0),e.year=c):/MM|M/.test(l)?(c<1&&(c=1,a=!0),e.month=c-1):/dd|d/.test(l)?(c<1&&(c=1,a=!0),e.date=c):/HH|H/.test(l)?(c<1&&(c=0,a=!0),e.hours=c,r.range&&(i[o[n]].hours=c)):/mm|m/.test(l)?(c<1&&(c=0,a=!0),e.minutes=c,r.range&&(i[o[n]].minutes=c)):/ss|s/.test(l)&&(c<1&&(c=0,a=!0),e.seconds=c,r.range&&(i[o[n]].seconds=c))}),c(e)};return\"limit\"===e?(c(o),i):(l=l||r.value,\"string\"==typeof l&&(l=l.replace(/\\s+/g,\" \").replace(/^\\s|\\s$/g,\"\")),i.startState&&!i.endState&&(delete i.startState,i.endState=!0),\"string\"==typeof l&&l?i.EXP_IF.test(l)?r.range?(l=l.split(\" \"+r.range+\" \"),i.startDate=i.startDate||i.systemDate(),i.endDate=i.endDate||i.systemDate(),r.dateTime=w.extend({},i.startDate),w.each([i.startDate,i.endDate],function(e,t){m(t,l[e],e)})):m(o,l):(i.hint(\"日期格式不合法<br>必须遵循下述格式：<br>\"+(r.range?r.format+\" \"+r.range+\" \"+r.format:r.format)+\"<br>已为你重置\"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():\"\":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split(\"-\");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html('<span class=\"laydate-day-mark\">'+n+\"</span>\"),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?\"endDate\":\"dateTime\"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.now<l.min||l.now>l.max,e&&e[i?\"addClass\":\"removeClass\"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u=\"date\"!==s.type&&\"datetime\"!==s.type,h=e?1:0,y=w(r.table[h]).find(\"td\"),f=w(r.elemHeader[h][2]).find(\"span\");if(l.year<d[0]&&(l.year=d[0],r.hint(\"最低只能支持到公元\"+d[0]+\"年\")),l.year>d[1]&&(l.year=d[1],r.hint(\"最高只能支持到公元\"+d[1]+\"年\")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr(\"class\"),e<t?(c=a-t+e,n.addClass(\"laydate-day-prev\"),d=r.getAsYM(l.year,l.month,\"sub\")):e>=t&&e<i+t?(c=e-t,s.range||c+1===l.date&&n.addClass(o)):(c=e-i-t,n.addClass(\"laydate-day-next\"),d=r.getAsYM(l.year,l.month)),d[1]++,d[2]=c+1,n.attr(\"lay-ymd\",d.join(\"-\")).html(d[2]),r.mark(n,d).limit(n,{year:d[0],month:d[1]-1,date:d[2]},e)}),w(f[0]).attr(\"lay-ym\",l.year+\"-\"+(l.month+1)),w(f[1]).attr(\"lay-ym\",l.year+\"-\"+(l.month+1)),\"cn\"===s.lang?(w(f[0]).attr(\"lay-type\",\"year\").html(l.year+\"年\"),w(f[1]).attr(\"lay-type\",\"month\").html(l.month+1+\"月\")):(w(f[0]).attr(\"lay-type\",\"month\").html(m.month[l.month]),w(f[1]).attr(\"lay-type\",\"year\").html(l.year)),u&&(s.range&&(e?r.endDate=r.endDate||{year:l.year+(\"year\"===s.type?1:0),month:l.month+(\"month\"===s.type?0:-1)}:r.startDate=r.startDate||{year:l.year,month:l.month},e&&(r.listYM=[[r.startDate.year,r.startDate.month+1],[r.endDate.year,r.endDate.month+1]],r.list(s.type,0).list(s.type,1),\"time\"===s.type?r.setBtnStatus(\"时间\",w.extend({},r.systemDate(),r.startTime),w.extend({},r.systemDate(),r.endTime)):r.setBtnStatus(!0))),s.range||(r.listYM=[[l.year,l.month+1]],r.list(s.type,0))),s.range&&!e){var p=r.getAsYM(l.year,l.month);r.calendar(w.extend({},l,{year:p[0],month:p[1]}))}return s.range||r.limit(w(r.footer).find(g),null,0,[\"hours\",\"minutes\",\"seconds\"]),s.range&&e&&!u&&r.stampRange(),r},T.prototype.list=function(e,t){var n=this,a=n.config,i=a.dateTime,r=n.lang(),l=a.range&&\"date\"!==a.type&&\"datetime\"!==a.type,d=w.elem(\"ul\",{\"class\":m+\" \"+{year:\"laydate-year-list\",month:\"laydate-month-list\",time:\"laydate-time-list\"}[e]}),c=n.elemHeader[t],u=w(c[2]).find(\"span\"),h=n.elemCont[t||0],y=w(h).find(\".\"+m)[0],f=\"cn\"===a.lang,p=f?\"年\":\"\",T=n.listYM[t]||{},C=[\"hours\",\"minutes\",\"seconds\"],x=[\"startTime\",\"endTime\"][t];if(T[0]<1&&(T[0]=1),\"year\"===e){var M,b=M=T[0]-7;b<1&&(b=M=1),w.each(new Array(15),function(e){var i=w.elem(\"li\",{\"lay-ym\":M}),r={year:M};M==T[0]&&w(i).addClass(o),i.innerHTML=M+p,d.appendChild(i),M<n.firstDate.year?(r.month=a.min.month,r.date=a.min.date):M>=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr(\"lay-ym\",M-8+\"-\"+T[1]).html(b+p+\" - \"+(M-1+p))}else if(\"month\"===e)w.each(new Array(12),function(e){var i=w.elem(\"li\",{\"lay-ym\":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?\"月\":\"\"),d.appendChild(i),T[0]<n.firstDate.year?s.date=a.min.date:T[0]>=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr(\"lay-ym\",T[0]+\"-\"+T[1]).html(T[0]+p);else if(\"time\"===e){var E=function(){w(d).find(\"ol\").each(function(e,a){w(a).find(\"li\").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[[\"hours\"],[\"hours\",\"minutes\"],[\"hours\",\"minutes\",\"seconds\"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,[\"hours\",\"minutes\",\"seconds\"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem(\"li\"),i=[\"<p>\"+r.time[e]+\"</p><ol>\"];w.each(new Array(t),function(t){i.push(\"<li\"+(n[x][C[e]]===t?' class=\"'+o+'\"':\"\")+\">\"+w.digit(t,2)+\"</li>\")}),a.innerHTML=i.join(\"\")+\"</ol>\",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),\"year\"===e||\"month\"===e)w(n.elemMain[t]).addClass(\"laydate-ym-show\"),w(d).find(\"li\").on(\"click\",function(){var r=0|w(this).attr(\"lay-ym\");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c=\"year\"===e?n.getAsYM(r,T[1]-1,\"sub\"):n.getAsYM(T[0],r,\"sub\");w.extend(i,{year:c[0],month:c[1]})}\"year\"===a.type||\"month\"===a.type?(w(d).find(\".\"+o).removeClass(o),w(this).addClass(o),\"month\"===a.type&&\"year\"===e&&(n.listYM[t][0]=r,l&&(n[[\"startDate\",\"endDate\"][t]].year=r),n.list(\"month\",t))):(n.checkDate(\"limit\").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,\"change\"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem(\"span\",{\"class\":v}),k=function(){w(d).find(\"ol\").each(function(e){var t=this,a=w(t).find(\"li\");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find(\".\"+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass(\"laydate-time-show\"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find(\"ol\").each(function(e){var t=this;w(t).find(\"li\").on(\"click\",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find(\".\"+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||\"time\"===a.type)&&n.done(null,\"change\"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find(\".\"+m).remove(),w(e.elemMain[t]).removeClass(\"laydate-ym-show laydate-time-show\")}),w(e.elem).find(\".\"+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&\"date\"!==r.type&&\"time\"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?\"addClass\":\"removeClass\"](s),e&&a&&i.hint(\"string\"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join(\"\")+\" \"+a.range+\" \"+n.parse(1):r.join(\"\")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?\"val\":\"html\";return\"static\"===n.position||w(a)[i](e||\"\"),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find(\"td\");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr(\"lay-ymd\").split(\"-\"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+\" \"+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s<t&&w(i).addClass(u)})},T.prototype.done=function(e,t){var n=this,a=n.config,i=w.extend({},n.startDate?w.extend(n.startDate,n.startTime):a.dateTime),r=w.extend({},w.extend(n.endDate,n.endTime));return w.each([i,r],function(e,t){\"month\"in t&&w.extend(t,{month:t.month+1})}),e=e||[n.parse(),i,r],\"function\"==typeof a[t||\"done\"]&&a[t||\"done\"].apply(a,e),n},T.prototype.choose=function(e){var t=this,n=t.config,a=n.dateTime,i=w(t.elem).find(\"td\"),r=e.attr(\"lay-ymd\").split(\"-\"),l=function(e){new Date;e&&w.extend(a,r),n.range&&(t.startDate?w.extend(t.startDate,r):t.startDate=w.extend({},r,t.startTime),t.startYMD=r)};if(r={year:0|r[0],month:(0|r[1])-1,date:0|r[2]},!e.hasClass(s))if(n.range){if(w.each([\"startTime\",\"endTime\"],function(e,n){t[n]=t[n]||{hours:0,minutes:0,seconds:0}}),t.endState)l(),delete t.endState,delete t.endDate,t.startState=!0,i.removeClass(o+\" \"+u),e.addClass(o);else if(t.startState){if(e.addClass(o),t.endDate?w.extend(t.endDate,r):t.endDate=w.extend({},r,t.endTime),t.newDate(r).getTime()<t.newDate(t.startYMD).getTime()){var d=w.extend({},t.endDate,{hours:t.startDate.hours,minutes:t.startDate.minutes,seconds:t.startDate.seconds});w.extend(t.endDate,t.startDate,{hours:t.endDate.hours,minutes:t.endDate.minutes,seconds:t.endDate.seconds}),t.startDate=d}n.showBottom||t.done(),t.stampRange(),t.endState=!0,t.done(null,\"change\")}else e.addClass(o),l(),t.startState=!0;w(t.footer).find(g)[t.endDate?\"removeClass\":\"addClass\"](s)}else\"static\"===n.position?(l(!0),t.calendar().done().done(null,\"change\")):\"date\"===n.type?(l(!0),t.setValue(t.parse()).remove().done()):\"datetime\"===n.type&&(l(!0),t.calendar().done(null,\"change\"))},T.prototype.tool=function(e,t){var n=this,a=n.config,i=a.dateTime,r=\"static\"===a.position,o={datetime:function(){w(e).hasClass(s)||(n.list(\"time\",0),a.range&&n.list(\"time\",1),w(e).attr(\"lay-type\",\"date\").html(n.lang().dateTips))},date:function(){n.closeList(),w(e).attr(\"lay-type\",\"datetime\").html(n.lang().timeTips)},clear:function(){n.setValue(\"\").remove(),r&&(w.extend(i,n.firstDate),n.calendar()),a.range&&(delete n.startState,delete n.endState,delete n.endDate,delete n.startTime,delete n.endTime),n.done([\"\",{},{}])},now:function(){var e=new Date;w.extend(i,n.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),n.setValue(n.parse()).remove(),r&&n.calendar(),n.done()},confirm:function(){if(a.range){if(!n.endDate)return n.hint(\"请先选择日期范围\");if(w(e).hasClass(s))return n.hint(\"time\"===a.type?l.replace(/日期/g,\"时间\"):l)}else if(w(e).hasClass(s))return n.hint(\"不在有效日期或时间范围内\");n.done(),n.setValue(n.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,n=t.config,a=n.dateTime,i=n.range&&(\"year\"===n.type||\"month\"===n.type),r=t.elemCont[e||0],o=t.listYM[e],s=function(s){var l=[\"startDate\",\"endDate\"][e],d=w(r).find(\".laydate-year-list\")[0],c=w(r).find(\".laydate-month-list\")[0];return d&&(o[0]=s?o[0]-15:o[0]+15,t.list(\"year\",e)),c&&(s?o[0]--:o[0]++,t.list(\"month\",e)),(d||c)&&(w.extend(a,{year:o[0]}),i&&(t[l].year=o[0]),n.range||t.done(null,\"change\"),t.setBtnStatus(),n.range||t.limit(w(t.footer).find(g),{year:o[0]})),d||c};return{prevYear:function(){s(\"sub\")||(a.year--,t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\"))},prevMonth:function(){var e=t.getAsYM(a.year,a.month,\"sub\");w.extend(a,{year:e[0],month:e[1]}),t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\")},nextMonth:function(){var e=t.getAsYM(a.year,a.month);w.extend(a,{year:e[0],month:e[1]}),t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\")},nextYear:function(){s()||(a.year++,t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\"))}}},T.prototype.changeEvent=function(){var e=this;e.config;w(e.elem).on(\"click\",function(e){w.stope(e)}),w.each(e.elemHeader,function(t,n){w(n[0]).on(\"click\",function(n){e.change(t).prevYear()}),w(n[1]).on(\"click\",function(n){e.change(t).prevMonth()}),w(n[2]).find(\"span\").on(\"click\",function(n){var a=w(this),i=a.attr(\"lay-ym\"),r=a.attr(\"lay-type\");i&&(i=i.split(\"-\"),e.listYM[t]=[0|i[0],0|i[1]],e.list(r,t),w(e.footer).find(D).addClass(s))}),w(n[3]).on(\"click\",function(n){e.change(t).nextMonth()}),w(n[4]).on(\"click\",function(n){e.change(t).nextYear()})}),w.each(e.table,function(t,n){var a=w(n).find(\"td\");a.on(\"click\",function(){e.choose(w(this))})}),w(e.footer).find(\"span\").on(\"click\",function(){var t=w(this).attr(\"lay-type\");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,n=function(n,a){n.on(t.trigger,function(){a&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(n(t.elem,\"bind\"),n(t.eventElem),w(document).on(\"click\",function(n){n.target!==t.elem[0]&&n.target!==t.eventElem[0]&&n.target!==w(t.closeStop)[0]&&e.remove()}).on(\"keydown\",function(t){13===t.keyCode&&w(\"#\"+e.elemID)[0]&&e.elemID===T.thisElem&&(t.preventDefault(),w(e.footer).find(g)[0].click())}),w(window).on(\"resize\",function(){return!(!e.elem||!w(r)[0])&&void e.position()}),t.elem[0].eventHandler=!0)},n.render=function(e){var t=new T(e);return a.call(t)},n.getEndDate=function(e,t){var n=new Date;return n.setFullYear(t||n.getFullYear(),e||n.getMonth()+1,1),new Date(n.getTime()-864e5).getDate()},window.lay=window.lay||w,e?(n.ready(),layui.define(function(e){n.path=layui.cache.dir,e(i,n)})):\"function\"==typeof define&&define.amd?define(function(){return n}):function(){n.ready(),window.laydate=n}()}();"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/layedit.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define([\"layer\",\"form\"],function(t){\"use strict\";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n=\"layedit\",o=\"layui-show\",r=\"layui-disabled\",c=function(){var t=this;t.index=0,t.config={tool:[\"strong\",\"italic\",\"underline\",\"del\",\"|\",\"left\",\"center\",\"right\",\"|\",\"link\",\"unlink\",\"face\",\"image\"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r=\"layui-layedit\",c=e(\"string\"==typeof t?\"#\"+t:t),u=\"LAY_layedit_\"+ ++a.index,d=c.next(\".\"+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join(\"\")}(),m=e(['<div class=\"'+r+'\">','<div class=\"layui-unselect layui-layedit-tool\">'+f+\"</div>\",'<div class=\"layui-layedit-iframe\">','<iframe id=\"'+u+'\" name=\"'+u+'\" textarea=\"'+t+'\" frameborder=\"0\"></iframe>',\"</div>\",\"</div>\"].join(\"\"));return l.ie&&l.ie<8?c.removeClass(\"layui-hide\").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass(\"layui-hide\").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e(\"#\"+i[1].attr(\"textarea\"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find(\"iframe\");n.css({height:a.height}).on(\"load\",function(){var o=n.contents(),r=n.prop(\"contentWindow\"),c=o.find(\"head\"),s=e([\"<style>\",\"*{margin: 0; padding: 0;}\",\"body{padding: 10px; line-height: 20px; overflow-x: hidden; word-wrap: break-word; font: 14px Helvetica Neue,Helvetica,PingFang SC,Microsoft YaHei,Tahoma,Arial,sans-serif; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}\",\"a{color:#01AAED; text-decoration:none;}a:hover{color:#c00}\",\"p{margin-bottom: 10px;}\",\"img{display: inline-block; border: none; vertical-align: middle;}\",\"pre{margin: 10px 0; padding: 10px; line-height: 20px; border: 1px solid #ddd; border-left-width: 6px; background-color: #F2F2F2; color: #333; font-family: Courier New; font-size: 12px;}\",\"</style>\"].join(\"\")),u=o.find(\"body\");c.append(s),u.attr(\"contenteditable\",\"true\").css({\"min-height\":a.height}).html(i.value||\"\"),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e(\"#LAY_layedit_\"+t),a=i.prop(\"contentWindow\");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on(\"keydown\",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if(\"pre\"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg(\"请暂时用shift+enter\"),!1}r.execCommand(\"formatBlock\",!1,\"<p>\")}}),e(n).parents(\"form\").on(\"submit\",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on(\"paste\",function(e){r.execCommand(\"formatBlock\",!1,\"<p>\"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find(\"*[style]\").each(function(){var t=this.style.textAlign;this.removeAttribute(\"style\"),e(this).css({\"text-align\":t||\"\"})}),t.find(\"table\").addClass(\"layui-table\"),t.find(\"script,link\").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute(\"text\"),l.selection){var r=a.text||i.text;if(\"a\"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop(\"outerHTML\")),a.select()}else{var r=a.toString()||i.text;if(\"a\"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l=\"layedit-tool-active\",n=p(m(a)),o=function(e){return t.find(\".layedit-tool-\"+e)};i&&i[i.hasClass(l)?\"removeClass\":\"addClass\"](l),t.find(\">i\").removeClass(l),o(\"unlink\").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;\"b\"!==t&&\"strong\"!==t||o(\"b\").addClass(l),\"i\"!==t&&\"em\"!==t||o(\"i\").addClass(l),\"u\"===t&&o(\"u\").addClass(l),\"strike\"===t&&o(\"d\").addClass(l),\"p\"===t&&(\"center\"===e?o(\"center\").addClass(l):\"right\"===e?o(\"right\").addClass(l):o(\"left\").addClass(l)),\"a\"===t&&(o(\"link\").addClass(l),o(\"unlink\").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr(\"href\"),target:l.attr(\"target\")},function(e){var a=l[0];\"A\"===a.tagName?a.href=e.url:v.call(t,\"a\",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand(\"unlink\")},face:function(e){x.call(this,function(i){v.call(t,\"img\",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use(\"upload\",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find(\"input\")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,\"img\",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||\"上传失败\")}})})},code:function(e){k.call(o,function(i){v.call(t,\"pre\",{text:i.code,\"lay-lang\":i.lang},e)})},help:function(){i.open({type:2,title:\"帮助\",area:[\"600px\",\"380px\"],shadeClose:!0,shade:.1,skin:\"layui-layer-msg\",content:[\"http://www.layui.com/about/layedit/help.html\",\"no\"]})}},s=a.find(\".layui-layedit-tool\"),u=function(){var i=e(this),a=i.attr(\"layedit-event\"),l=i.attr(\"lay-command\");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand(\"formatBlock\",!1,\"<p>\"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(\">i\").on(\"mousedown\",function(){var t=e(this),i=t.attr(\"layedit-event\");d.test(i)||u.call(this)}).on(\"click\",function(){var t=e(this),i=t.attr(\"layedit-event\");d.test(i)&&u.call(this)}),o.on(\"click\",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:\"LAY_layedit_link\",area:\"350px\",shade:.05,shadeClose:!0,moveType:1,title:\"超链接\",skin:\"layui-layer-msg\",content:['<ul class=\"layui-form\" style=\"margin: 15px;\">','<li class=\"layui-form-item\">','<label class=\"layui-form-label\" style=\"width: 60px;\">URL</label>','<div class=\"layui-input-block\" style=\"margin-left: 90px\">','<input name=\"url\" lay-verify=\"url\" value=\"'+(t.href||\"\")+'\" autofocus=\"true\" autocomplete=\"off\" class=\"layui-input\">',\"</div>\",\"</li>\",'<li class=\"layui-form-item\">','<label class=\"layui-form-label\" style=\"width: 60px;\">打开方式</label>','<div class=\"layui-input-block\" style=\"margin-left: 90px\">','<input type=\"radio\" name=\"target\" value=\"_self\" class=\"layui-input\" title=\"当前窗口\"'+(\"_self\"!==t.target&&t.target?\"\":\"checked\")+\">\",'<input type=\"radio\" name=\"target\" value=\"_blank\" class=\"layui-input\" title=\"新窗口\" '+(\"_blank\"===t.target?\"checked\":\"\")+\">\",\"</div>\",\"</li>\",'<li class=\"layui-form-item\" style=\"text-align: center;\">','<button type=\"button\" lay-submit lay-filter=\"layedit-link-yes\" class=\"layui-btn\"> 确定 </button>','<button style=\"margin-left: 20px;\" type=\"button\" class=\"layui-btn layui-btn-primary\"> 取消 </button>',\"</li>\",\"</ul>\"].join(\"\"),success:function(t,n){var o=\"submit(layedit-link-yes)\";a.render(\"radio\"),t.find(\".layui-btn-primary\").on(\"click\",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=[\"[微笑]\",\"[嘻嘻]\",\"[哈哈]\",\"[可爱]\",\"[可怜]\",\"[挖鼻]\",\"[吃惊]\",\"[害羞]\",\"[挤眼]\",\"[闭嘴]\",\"[鄙视]\",\"[爱你]\",\"[泪]\",\"[偷笑]\",\"[亲亲]\",\"[生病]\",\"[太开心]\",\"[白眼]\",\"[右哼哼]\",\"[左哼哼]\",\"[嘘]\",\"[衰]\",\"[委屈]\",\"[吐]\",\"[哈欠]\",\"[抱抱]\",\"[怒]\",\"[疑问]\",\"[馋嘴]\",\"[拜拜]\",\"[思考]\",\"[汗]\",\"[困]\",\"[睡]\",\"[钱]\",\"[失望]\",\"[酷]\",\"[色]\",\"[哼]\",\"[鼓掌]\",\"[晕]\",\"[悲伤]\",\"[抓狂]\",\"[黑线]\",\"[阴险]\",\"[怒骂]\",\"[互粉]\",\"[心]\",\"[伤心]\",\"[猪头]\",\"[熊猫]\",\"[兔子]\",\"[ok]\",\"[耶]\",\"[good]\",\"[NO]\",\"[赞]\",\"[来]\",\"[弱]\",\"[草泥马]\",\"[神马]\",\"[囧]\",\"[浮云]\",\"[给力]\",\"[围观]\",\"[威武]\",\"[奥特曼]\",\"[礼物]\",\"[钟]\",\"[话筒]\",\"[蜡烛]\",\"[蛋糕]\"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+\"images/face/\"+t+\".gif\"}),e}();return x.hide=x.hide||function(t){\"face\"!==e(t.target).attr(\"layedit-event\")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('<li title=\"'+e+'\"><img src=\"'+i+'\" alt=\"'+e+'\"></li>')}),'<ul class=\"layui-clear\">'+t.join(\"\")+\"</ul>\"}(),this,{tips:1,time:0,skin:\"layui-box layui-util-face\",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(\".layui-clear>li\").on(\"click\",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off(\"click\",x.hide).on(\"click\",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:\"LAY_layedit_code\",area:\"550px\",shade:.05,shadeClose:!0,moveType:1,title:\"插入代码\",skin:\"layui-layer-msg\",content:['<ul class=\"layui-form layui-form-pane\" style=\"margin: 15px;\">','<li class=\"layui-form-item\">','<label class=\"layui-form-label\">请选择语言</label>','<div class=\"layui-input-block\">','<select name=\"lang\">','<option value=\"JavaScript\">JavaScript</option>','<option value=\"HTML\">HTML</option>','<option value=\"CSS\">CSS</option>','<option value=\"Java\">Java</option>','<option value=\"PHP\">PHP</option>','<option value=\"C#\">C#</option>','<option value=\"Python\">Python</option>','<option value=\"Ruby\">Ruby</option>','<option value=\"Go\">Go</option>',\"</select>\",\"</div>\",\"</li>\",'<li class=\"layui-form-item layui-form-text\">','<label class=\"layui-form-label\">代码</label>','<div class=\"layui-input-block\">','<textarea name=\"code\" lay-verify=\"required\" autofocus=\"true\" class=\"layui-textarea\" style=\"height: 200px;\"></textarea>',\"</div>\",\"</li>\",'<li class=\"layui-form-item\" style=\"text-align: center;\">','<button type=\"button\" lay-submit lay-filter=\"layedit-code-yes\" class=\"layui-btn\"> 确定 </button>','<button style=\"margin-left: 20px;\" type=\"button\" class=\"layui-btn layui-btn-primary\"> 取消 </button>',\"</li>\",\"</ul>\"].join(\"\"),success:function(l,n){var o=\"submit(layedit-code-yes)\";a.render(\"select\"),l.find(\".layui-btn-primary\").on(\"click\",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'<i class=\"layui-icon layedit-tool-html\" title=\"HTML源代码\" lay-command=\"html\" layedit-event=\"html\"\">&#xe64b;</i><span class=\"layedit-tool-mid\"></span>',strong:'<i class=\"layui-icon layedit-tool-b\" title=\"加粗\" lay-command=\"Bold\" layedit-event=\"b\"\">&#xe62b;</i>',italic:'<i class=\"layui-icon layedit-tool-i\" title=\"斜体\" lay-command=\"italic\" layedit-event=\"i\"\">&#xe644;</i>',underline:'<i class=\"layui-icon layedit-tool-u\" title=\"下划线\" lay-command=\"underline\" layedit-event=\"u\"\">&#xe646;</i>',del:'<i class=\"layui-icon layedit-tool-d\" title=\"删除线\" lay-command=\"strikeThrough\" layedit-event=\"d\"\">&#xe64f;</i>',\"|\":'<span class=\"layedit-tool-mid\"></span>',left:'<i class=\"layui-icon layedit-tool-left\" title=\"左对齐\" lay-command=\"justifyLeft\" layedit-event=\"left\"\">&#xe649;</i>',center:'<i class=\"layui-icon layedit-tool-center\" title=\"居中对齐\" lay-command=\"justifyCenter\" layedit-event=\"center\"\">&#xe647;</i>',right:'<i class=\"layui-icon layedit-tool-right\" title=\"右对齐\" lay-command=\"justifyRight\" layedit-event=\"right\"\">&#xe648;</i>',link:'<i class=\"layui-icon layedit-tool-link\" title=\"插入链接\" layedit-event=\"link\"\">&#xe64c;</i>',unlink:'<i class=\"layui-icon layedit-tool-unlink layui-disabled\" title=\"清除链接\" lay-command=\"unlink\" layedit-event=\"unlink\"\">&#xe64d;</i>',face:'<i class=\"layui-icon layedit-tool-face\" title=\"表情\" layedit-event=\"face\"\">&#xe650;</i>',image:'<i class=\"layui-icon layedit-tool-image\" title=\"图片\" layedit-event=\"image\">&#xe64a;<input type=\"file\" name=\"file\"></i>',code:'<i class=\"layui-icon layedit-tool-code\" title=\"插入代码\" layedit-event=\"code\">&#xe64e;</i>',help:'<i class=\"layui-icon layedit-tool-help\" title=\"帮助\" layedit-event=\"help\">&#xe607;</i>'},w=new c;t(n,w)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/layer.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e,t){\"use strict\";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if(\"interactive\"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:[\"&#x786E;&#x5B9A;\",\"&#x53D6;&#x6D88;\"],type:[\"dialog\",\"page\",\"iframe\",\"loading\",\"tips\"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName(\"head\")[0],s=document.createElement(\"link\");\"string\"==typeof i&&(n=i);var l=(n||t).replace(/\\.|\\//g,\"\"),f=\"layuicss-\"+l,c=0;s.rel=\"stylesheet\",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),\"function\"==typeof i&&!function u(){return++c>80?e.console&&console.error(\"layer.css: Invalid\"):void(1989===parseInt(o.getStyle(document.getElementById(f),\"width\"))?i():setTimeout(u,100))}()}}},r={v:\"3.1.1\",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||\"ActiveXObject\"in e)&&((t.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,\"string\"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss(\"modules/layer/\"+e.extend):o.link(\"theme/\"+e.extend),this):this},ready:function(e){var t=\"layer\",i=\"\",n=(a?\"modules/layer/\":\"theme/\")+\"default/layer.css?v=\"+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a=\"function\"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s=\"function\"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s=\"function\"==typeof n,f=o.config.skin,c=(f?f+\" \"+f+\"-msg\":\"\")||\"layui-layer-msg\",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+\" layui-layer-hui\",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+\" \"+(n.skin||\"layui-layer-hui\")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=[\"layui-layer\",\".layui-layer-title\",\".layui-layer-main\",\".layui-layer-dialog\",\"layui-layer-iframe\",\"layui-layer-content\",\"layui-layer-btn\",\"layui-layer-close\"];l.anim=[\"layer-anim-00\",\"layer-anim-01\",\"layer-anim-02\",\"layer-anim-03\",\"layer-anim-04\",\"layer-anim-05\",\"layer-anim-06\"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:\"&#x4FE1;&#x606F;\",offset:\"auto\",area:\"auto\",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f=\"object\"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'<div class=\"layui-layer-title\" style=\"'+(f?r.title[1]:\"\")+'\">'+(f?r.title[0]:r.title)+\"</div>\":\"\";return r.zIndex=s,t([r.shade?'<div class=\"layui-layer-shade\" id=\"layui-layer-shade'+a+'\" times=\"'+a+'\" style=\"'+(\"z-index:\"+(s-1)+\"; \")+'\"></div>':\"\",'<div class=\"'+l[0]+(\" layui-layer-\"+o.type[r.type])+(0!=r.type&&2!=r.type||r.shade?\"\":\" layui-layer-border\")+\" \"+(r.skin||\"\")+'\" id=\"'+l[0]+a+'\" type=\"'+o.type[r.type]+'\" times=\"'+a+'\" showtime=\"'+r.time+'\" conType=\"'+(e?\"object\":\"string\")+'\" style=\"z-index: '+s+\"; width:\"+r.area[0]+\";height:\"+r.area[1]+(r.fixed?\"\":\";position:absolute;\")+'\">'+(e&&2!=r.type?\"\":u)+'<div id=\"'+(r.id||\"\")+'\" class=\"layui-layer-content'+(0==r.type&&r.icon!==-1?\" layui-layer-padding\":\"\")+(3==r.type?\" layui-layer-loading\"+r.icon:\"\")+'\">'+(0==r.type&&r.icon!==-1?'<i class=\"layui-layer-ico layui-layer-ico'+r.icon+'\"></i>':\"\")+(1==r.type&&e?\"\":r.content||\"\")+'</div><span class=\"layui-layer-setwin\">'+function(){var e=c?'<a class=\"layui-layer-min\" href=\"javascript:;\"><cite></cite></a><a class=\"layui-layer-ico layui-layer-max\" href=\"javascript:;\"></a>':\"\";return r.closeBtn&&(e+='<a class=\"layui-layer-ico '+l[7]+\" \"+l[7]+(r.title?r.closeBtn:4==r.type?\"1\":\"2\")+'\" href=\"javascript:;\"></a>'),e}()+\"</span>\"+(r.btn?function(){var e=\"\";\"string\"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t<i;t++)e+='<a class=\"'+l[6]+t+'\">'+r.btn[t]+\"</a>\";return'<div class=\"'+l[6]+\" layui-layer-btn-\"+(r.btnAlign||\"\")+'\">'+e+\"</div>\"}():\"\")+(r.resize?'<span class=\"layui-layer-resize\"></span>':\"\")+\"</div>\"],u,i('<div class=\"layui-layer-move\"></div>')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f=\"object\"==typeof s,c=i(\"body\");if(!t.id||!i(\"#\"+t.id)[0]){switch(\"string\"==typeof t.area&&(t.area=\"auto\"===t.area?[\"\",\"\"]:[t.area,\"\"]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn=\"btn\"in t?t.btn:o.btn[0],r.closeAll(\"dialog\");break;case 2:var s=t.content=f?t.content:[t.content||\"\",\"auto\"];t.content='<iframe scrolling=\"'+(t.content[1]||\"auto\")+'\" allowtransparency=\"true\" id=\"'+l[4]+a+'\" name=\"'+l[4]+a+'\" onload=\"this.className=\\'\\';\" class=\"layui-layer-load\" frameborder=\"0\" src=\"'+t.content[0]+'\"></iframe>';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll(\"loading\");break;case 4:f||(t.content=[t.content,\"body\"]),t.follow=t.content[1],t.content=t.content[0]+'<i class=\"layui-layer-TipsG\"></i>',delete t.title,t.tips=\"object\"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll(\"tips\")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i(\"body\").append(n[1])}():function(){s.parents(\".\"+l[0])[0]||(s.data(\"display\",s.css(\"display\")).show().addClass(\"layui-layer-wrap\").wrap(n[1]),i(\"#\"+l[0]+a).find(\".\"+l[5]).before(r))}()}():c.append(n[1]),i(\".layui-layer-move\")[0]||c.append(o.moveElem=u),e.layero=i(\"#\"+l[0]+a),t.scrollbar||l.html.css(\"overflow\",\"hidden\").attr(\"layer-full\",a)}).auto(a),i(\"#layui-layer-shade\"+e.index).css({\"background-color\":t.shade[1]||\"#000\",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find(\"iframe\").attr(\"src\",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on(\"resize\",function(){e.offset(),(/^\\d+%$/.test(t.area[0])||/^\\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u=\"layer-anim \"+l.anim[t.anim];e.layero.addClass(u).one(\"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend\",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data(\"isOutAnim\",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i(\"#\"+l[0]+e);\"\"===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find(\".\"+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css(\"padding-top\"))))};switch(a.type){case 2:u(\"iframe\");break;default:\"\"===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u(\".\"+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u(\".\"+l[5])):u(\".\"+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o=\"object\"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):\"auto\"!==t.offset&&(\"t\"===t.offset?e.offsetTop=0:\"r\"===t.offset?e.offsetLeft=n.width()-a[0]:\"b\"===t.offset?e.offsetTop=n.height()-a[1]:\"l\"===t.offset?e.offsetLeft=0:\"lt\"===t.offset?(e.offsetTop=0,e.offsetLeft=0):\"lb\"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):\"rt\"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):\"rb\"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr(\"minLeft\")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css(\"left\")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i(\"body\"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(\".layui-layer-TipsG\"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:\"auto\"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass(\"layui-layer-TipsB\").addClass(\"layui-layer-TipsT\").css(\"border-right-color\",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass(\"layui-layer-TipsL\").addClass(\"layui-layer-TipsR\").css(\"border-bottom-color\",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass(\"layui-layer-TipsT\").addClass(\"layui-layer-TipsB\").css(\"border-right-color\",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass(\"layui-layer-TipsR\").addClass(\"layui-layer-TipsL\").css(\"border-bottom-color\",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find(\".\"+l[5]).css({\"background-color\":t.tips[1],\"padding-right\":t.closeBtn?\"30px\":\"\"}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(\".layui-layer-resize\"),c={};return t.move&&l.css(\"cursor\",\"move\"),l.on(\"mousedown\",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css(\"left\")),e.clientY-parseFloat(s.css(\"top\"))],o.moveElem.css(\"cursor\",\"move\").show())}),f.on(\"mousedown\",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css(\"cursor\",\"se-resize\").show()}),a.on(\"mousemove\",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l=\"fixed\"===s.css(\"position\");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;a<c.stX&&(a=c.stX),a>f&&(a=f),o<c.stY&&(o=c.stY),o>u&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on(\"mouseup\",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find(\"iframe\").on(\"load\",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find(\".\"+l[6]).children(\"a\").on(\"click\",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a[\"btn\"+(e+1)]&&a[\"btn\"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find(\".\"+l[7]).on(\"click\",e),a.shadeClose&&i(\"#layui-layer-shade\"+t.index).on(\"click\",function(){r.close(t.index)}),n.find(\".layui-layer-min\").on(\"click\",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(\".layui-layer-max\").on(\"click\",function(){i(this).hasClass(\"layui-layer-maxmin\")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i(\"select\"),function(e,t){var n=i(this);n.parents(\".\"+l[0])[0]||1==n.attr(\"layer\")&&i(\".\"+l[0]).length<1&&n.removeAttr(\"layer\").show(),n=null})},s.pt.IE6=function(e){i(\"select\").each(function(e,t){var n=i(this);n.parents(\".\"+l[0])[0]||\"none\"===n.css(\"display\")||n.attr({layer:\"1\"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css(\"z-index\",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on(\"mousedown\",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css(\"margin-left\"))];e.find(\".layui-layer-max\").addClass(\"layui-layer-maxmin\"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr(\"layer-full\")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty(\"overflow\"):l.html[0].style.removeAttribute(\"overflow\"),l.html.removeAttr(\"layer-full\"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i(\".\"+l[4]).attr(\"times\"),i(\"#\"+l[0]+t).find(\"iframe\").contents().find(e)},r.getFrameIndex=function(e){return i(\"#\"+e).parents(\".\"+l[4]).attr(\"times\")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame(\"html\",e).outerHeight(),n=i(\"#\"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find(\".\"+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find(\"iframe\").css({height:t})}},r.iframeSrc=function(e,t){i(\"#\"+l[0]+e).find(\"iframe\").attr(\"src\",t)},r.style=function(e,t,n){var a=i(\"#\"+l[0]+e),r=a.find(\".layui-layer-content\"),s=a.attr(\"type\"),f=a.find(l[1]).outerHeight()||0,c=a.find(\".\"+l[6]).outerHeight()||0;a.attr(\"minLeft\");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find(\".\"+l[6]).outerHeight(),s===o.type[2]?a.find(\"iframe\").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css(\"padding-top\"))-parseFloat(r.css(\"padding-bottom\"))}))},r.min=function(e,t){var a=i(\"#\"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr(\"minLeft\")||181*o.minIndex+\"px\",c=a.css(\"position\");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr(\"position\",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:\"fixed\",overflow:\"hidden\"},!0),a.find(\".layui-layer-min\").hide(),\"page\"===a.attr(\"type\")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr(\"minLeft\")||o.minIndex++,a.attr(\"minLeft\",f)},r.restore=function(e){var t=i(\"#\"+l[0]+e),n=t.attr(\"area\").split(\",\");t.attr(\"type\");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr(\"position\"),overflow:\"visible\"},!0),t.find(\".layui-layer-max\").removeClass(\"layui-layer-maxmin\"),t.find(\".layui-layer-min\").show(),\"page\"===t.attr(\"type\")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i(\"#\"+l[0]+e);o.record(a),l.html.attr(\"layer-full\")||l.html.css(\"overflow\",\"hidden\").attr(\"layer-full\",e),clearTimeout(t),t=setTimeout(function(){var t=\"fixed\"===a.css(\"position\");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(\".layui-layer-min\").hide()},100)},r.title=function(e,t){var n=i(\"#\"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i(\"#\"+l[0]+e),n=t.attr(\"type\"),a=\"layer-anim-close\";if(t[0]){var s=\"layui-layer-wrap\",f=function(){if(n===o.type[1]&&\"object\"===t.attr(\"conType\")){t.children(\":not(.\"+l[5]+\")\").remove();for(var a=t.find(\".\"+s),r=0;r<2;r++)a.unwrap();a.css(\"display\",a.data(\"display\")).removeClass(s)}else{if(n===o.type[2])try{var f=i(\"#\"+l[4]+e)[0];f.contentWindow.document.write(\"\"),f.contentWindow.close(),t.find(\".\"+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML=\"\",t.remove()}\"function\"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data(\"isOutAnim\")&&t.addClass(\"layer-anim \"+a),i(\"#layui-layer-moves, #layui-layer-shade\"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr(\"minLeft\")&&(o.minIndex--,o.minLeft.push(t.attr(\"minLeft\"))),r.ie&&r.ie<10||!t.data(\"isOutAnim\")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i(\".\"+l[0]),function(){var t=i(this),n=e?t.attr(\"type\")===e:1;n&&r.close(t.attr(\"times\")),n=null})};var f=r.cache||{},c=function(e){return f.skin?\" \"+f.skin+\" \"+f.skin+\"-\"+e:\"\"};r.prompt=function(e,t){var a=\"\";if(e=e||{},\"function\"==typeof e&&(t=e),e.area){var o=e.area;a='style=\"width: '+o[0]+\"; height: \"+o[1]+';\"',delete e.area}var s,l=2==e.formType?'<textarea class=\"layui-layer-input\"'+a+\"></textarea>\":function(){return'<input type=\"'+(1==e.formType?\"password\":\"text\")+'\" class=\"layui-layer-input\">'}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:[\"&#x786E;&#x5B9A;\",\"&#x53D6;&#x6D88;\"],content:l,skin:\"layui-layer-prompt\"+c(\"prompt\"),maxWidth:n.width(),success:function(t){s=t.find(\".layui-layer-input\"),s.val(e.value||\"\").focus(),\"function\"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();\"\"===n?s.focus():n.length>(e.maxlength||500)?r.tips(\"&#x6700;&#x591A;&#x8F93;&#x5165;\"+(e.maxlength||500)+\"&#x4E2A;&#x5B57;&#x6570;\",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n=\"layui-this\",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:\"layui-layer-tab\"+c(\"tab\"),resize:!1,title:function(){var e=t.length,i=1,a=\"\";if(e>0)for(a='<span class=\"'+n+'\">'+t[0].title+\"</span>\";i<e;i++)a+=\"<span>\"+t[i].title+\"</span>\";return a}(),content:'<ul class=\"layui-layer-tabmain\">'+function(){var e=t.length,i=1,a=\"\";if(e>0)for(a='<li class=\"layui-layer-tabli '+n+'\">'+(t[0].content||\"no content\")+\"</li>\";i<e;i++)a+='<li class=\"layui-layer-tabli\">'+(t[i].content||\"no  content\")+\"</li>\";return a}()+\"</ul>\",success:function(t){var o=t.find(\".layui-layer-title\").children(),r=t.find(\".layui-layer-tabmain\").children();o.on(\"mousedown\",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),\"function\"==typeof e.change&&e.change(o)}),\"function\"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||\"img\";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg(\"&#x6CA1;&#x6709;&#x56FE;&#x7247;\")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr(\"layer-index\",e),u.push({alt:t.attr(\"alt\"),pid:t.attr(\"layer-pid\"),src:t.attr(\"layer-src\")||t.attr(\"src\"),thumb:t.attr(\"src\")})})};if(h(),0===u.length)return;if(n||p.on(\"click\",t.img,function(){var e=i(this),n=e.attr(\"layer-index\");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(\".layui-layer-imgprev\").on(\"click\",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(\".layui-layer-imgnext\").on(\"click\",function(e){e.preventDefault(),s.imgnext()}),i(document).on(\"keyup\",s.keyup)},s.loadi=r.load(1,{shade:!(\"shade\"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:\"layui-layer-photos\",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]<r[1]&&(a[0]=a[0]/r[1],a[1]=a[1]/r[1])}return[a[0]+\"px\",a[1]+\"px\"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:\".layui-layer-phimg img\",moveType:1,scrollbar:!1,moveOut:!0,isOutAnim:!1,skin:\"layui-layer-photos\"+c(\"photos\"),content:'<div class=\"layui-layer-phimg\"><img src=\"'+u[d].src+'\" alt=\"'+(u[d].alt||\"\")+'\" layer-pid=\"'+u[d].pid+'\"><div class=\"layui-layer-imgsee\">'+(u.length>1?'<span class=\"layui-layer-imguide\"><a href=\"javascript:;\" class=\"layui-layer-iconext layui-layer-imgprev\"></a><a href=\"javascript:;\" class=\"layui-layer-iconext layui-layer-imgnext\"></a></span>':\"\")+'<div class=\"layui-layer-imgbar\" style=\"display:'+(a?\"block\":\"\")+'\"><span class=\"layui-layer-imgtit\"><a href=\"javascript:;\">'+(u[d].alt||\"\")+\"</a><em>\"+s.imgIndex+\"/\"+u.length+\"</em></span></div></div></div>\",success:function(e,i){s.bigimg=e.find(\".layui-layer-phimg\"),s.imgsee=e.find(\".layui-layer-imguide,.layui-layer-imgbar\"),s.event(e),t.tab&&t.tab(u[d],e),\"function\"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off(\"keyup\",s.keyup)}},t))},function(){r.close(s.loadi),r.msg(\"&#x5F53;&#x524D;&#x56FE;&#x7247;&#x5730;&#x5740;&#x5F02;&#x5E38;<br>&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x67E5;&#x770B;&#x4E0B;&#x4E00;&#x5F20;&#xFF1F;\",{time:3e4,btn:[\"&#x4E0B;&#x4E00;&#x5F20;\",\"&#x4E0D;&#x770B;&#x4E86;\"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i(\"html\"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define(\"jquery\",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t(\"layer\",r)})):\"function\"==typeof define&&define.amd?define([\"jquery\"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/laypage.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var a=document,t=\"getElementById\",n=\"getElementsByTagName\",i=\"laypage\",r=\"layui-disabled\",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if(\"object\"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups=\"groups\"in a?0|a.groups:5;a.layout=\"object\"==typeof a.layout?a.layout:[\"prev\",\"page\",\"next\"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits=\"object\"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev=\"prev\"in a?a.prev:\"&#x4E0A;&#x4E00;&#x9875;\",a.next=\"next\"in a?a.next:\"&#x4E0B;&#x4E00;&#x9875;\";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href=\"javascript:;\" class=\"layui-laypage-prev'+(1==a.curr?\" \"+r:\"\")+'\" data-page=\"'+(a.curr-1)+'\">'+a.prev+\"</a>\":\"\"}(),page:function(){var e=[];if(a.count<1)return\"\";n>1&&a.first!==!1&&0!==t&&e.push('<a href=\"javascript:;\" class=\"layui-laypage-first\" data-page=\"1\"  title=\"&#x9996;&#x9875;\">'+(a.first||1)+\"</a>\");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class=\"layui-laypage-spr\">&#x2026;</span>');r<=u;r++)r===a.curr?e.push('<span class=\"layui-laypage-curr\"><em class=\"layui-laypage-em\" '+(/^#/.test(a.theme)?'style=\"background-color:'+a.theme+';\"':\"\")+\"></em><em>\"+r+\"</em></span>\"):e.push('<a href=\"javascript:;\" data-page=\"'+r+'\">'+r+\"</a>\");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class=\"layui-laypage-spr\">&#x2026;</span>'),0!==t&&e.push('<a href=\"javascript:;\" class=\"layui-laypage-last\" title=\"&#x5C3E;&#x9875;\"  data-page=\"'+a.pages+'\">'+(a.last||a.pages)+\"</a>\")),e.join(\"\")}(),next:function(){return a.next?'<a href=\"javascript:;\" class=\"layui-laypage-next'+(a.curr==a.pages?\" \"+r:\"\")+'\" data-page=\"'+(a.curr+1)+'\">'+a.next+\"</a>\":\"\"}(),count:'<span class=\"layui-laypage-count\">共 '+a.count+\" 条</span>\",limit:function(){var e=['<span class=\"layui-laypage-limits\"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value=\"'+n+'\"'+(n===a.limit?\"selected\":\"\")+\">\"+n+\" 条/页</option>\")}),e.join(\"\")+\"</select></span>\"}(),refresh:['<a href=\"javascript:;\" data-page=\"'+a.curr+'\" class=\"layui-laypage-refresh\">','<i class=\"layui-icon layui-icon-refresh\"></i>',\"</a>\"].join(\"\"),skip:function(){return['<span class=\"layui-laypage-skip\">&#x5230;&#x7B2C;','<input type=\"text\" min=\"1\" value=\"'+a.curr+'\" class=\"layui-input\">','&#x9875;<button type=\"button\" class=\"layui-laypage-btn\">&#x786e;&#x5b9a;</button>',\"</span>\"].join(\"\")}()};return['<div class=\"layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?\"molv\":a.theme:\"default\")+'\" id=\"layui-laypage-'+a.index+'\">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join(\"\")}(),\"</div>\"].join(\"\")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n](\"button\")[0],l=e[n](\"input\")[0],p=e[n](\"select\")[0],c=function(){var e=0|l.value.replace(/\\s|\\D/g,\"\");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)\"a\"===r[o].nodeName.toLowerCase()&&s.on(r[o],\"click\",function(){var e=0|this.getAttribute(\"data-page\");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,\"change\",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,\"click\",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n](\"input\")[0];t&&s.on(t,\"keyup\",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\\D/.test(n)&&(this.value=n.replace(/\\D/,\"\")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t](\"layui-laypage-\"+i.index);n.jump(s),i.hash&&!e&&(location.hash=\"!\"+i.hash+\"=\"+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent(\"on\"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/laytpl.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var r={open:\"{{\",close:\"}}\"},c={exp:function(e){return new RegExp(e,\"g\")},query:function(e,c,t){var o=[\"#([\\\\s\\\\S])+?\",\"([^{#}])*?\"][e||0];return n((c||\"\")+r.open+o+r.close+(t||\"\"))},escape:function(e){return String(e||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")},error:function(e,r){var c=\"Laytpl Error：\";return\"object\"==typeof console&&console.error(c+e+\"\\n\"+(r||\"\")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n(\"^\"+r.open+\"#\",\"\"),l=n(r.close+\"$\",\"\");e=e.replace(/\\s+|\\r|\\t|\\n/g,\" \").replace(n(r.open+\"#\"),r.open+\"# \").replace(n(r.close+\"}\"),\"} \"+r.close).replace(/\\\\/g,\"\\\\\\\\\").replace(n(r.open+\"!(.+?)!\"+r.close),function(e){return e=e.replace(n(\"^\"+r.open+\"!\"),\"\").replace(n(\"!\"+r.close),\"\").replace(n(r.open+\"|\"+r.close),function(e){return e.replace(/(.)/g,\"\\\\$1\")})}).replace(/(?=\"|')/g,\"\\\\\").replace(c.query(),function(e){return e=e.replace(a,\"\").replace(l,\"\"),'\";'+e.replace(/\\\\/g,\"\")+';view+=\"'}).replace(c.query(1),function(e){var c='\"+(';return e.replace(/\\s/g,\"\")===r.open+r.close?\"\":(e=e.replace(n(r.open+\"|\"+r.close),\"\"),/^=/.test(e)&&(e=e.replace(/^=/,\"\"),c='\"+_escape_('),c+e.replace(/\\\\/g,\"\")+')+\"')}),e='\"use strict\";var view = \"'+e+'\";return view;';try{return o.cache=e=new Function(\"d, _escape_\",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error(\"no data\")};var o=function(e){return\"string\"!=typeof e?c.error(\"Template not found\"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v=\"1.2.0\",e(\"laytpl\",o)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/mobile.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(function(i){i(\"layui.mobile\",layui.v)});layui.define(function(e){\"use strict\";var r={open:\"{{\",close:\"}}\"},c={exp:function(e){return new RegExp(e,\"g\")},query:function(e,c,t){var o=[\"#([\\\\s\\\\S])+?\",\"([^{#}])*?\"][e||0];return n((c||\"\")+r.open+o+r.close+(t||\"\"))},escape:function(e){return String(e||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")},error:function(e,r){var c=\"Laytpl Error：\";return\"object\"==typeof console&&console.error(c+e+\"\\n\"+(r||\"\")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n(\"^\"+r.open+\"#\",\"\"),l=n(r.close+\"$\",\"\");e=e.replace(/\\s+|\\r|\\t|\\n/g,\" \").replace(n(r.open+\"#\"),r.open+\"# \").replace(n(r.close+\"}\"),\"} \"+r.close).replace(/\\\\/g,\"\\\\\\\\\").replace(n(r.open+\"!(.+?)!\"+r.close),function(e){return e=e.replace(n(\"^\"+r.open+\"!\"),\"\").replace(n(\"!\"+r.close),\"\").replace(n(r.open+\"|\"+r.close),function(e){return e.replace(/(.)/g,\"\\\\$1\")})}).replace(/(?=\"|')/g,\"\\\\\").replace(c.query(),function(e){return e=e.replace(a,\"\").replace(l,\"\"),'\";'+e.replace(/\\\\/g,\"\")+';view+=\"'}).replace(c.query(1),function(e){var c='\"+(';return e.replace(/\\s/g,\"\")===r.open+r.close?\"\":(e=e.replace(n(r.open+\"|\"+r.close),\"\"),/^=/.test(e)&&(e=e.replace(/^=/,\"\"),c='\"+_escape_('),c+e.replace(/\\\\/g,\"\")+')+\"')}),e='\"use strict\";var view = \"'+e+'\";return view;';try{return o.cache=e=new Function(\"d, _escape_\",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error(\"no data\")};var o=function(e){return\"string\"!=typeof e?c.error(\"Template not found\"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v=\"1.2.0\",e(\"laytpl\",o)});layui.define(function(e){\"use strict\";var t=(window,document),i=\"querySelectorAll\",n=\"getElementsByClassName\",a=function(e){return t[i](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:\"scale\"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var i in e)t[i]=e[i];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener(\"click\",function(e){t.call(this,e)},!1)};var o=0,r=[\"layui-m-layer\"],d=function(e){var t=this;t.config=l.extend(e),t.view()};d.prototype.view=function(){var e=this,i=e.config,s=t.createElement(\"div\");e.id=s.id=r[0]+o,s.setAttribute(\"class\",r[0]+\" \"+r[0]+(i.type||0)),s.setAttribute(\"index\",o);var l=function(){var e=\"object\"==typeof i.title;return i.title?'<h3 style=\"'+(e?i.title[1]:\"\")+'\">'+(e?i.title[0]:i.title)+\"</h3>\":\"\"}(),d=function(){\"string\"==typeof i.btn&&(i.btn=[i.btn]);var e,t=(i.btn||[]).length;return 0!==t&&i.btn?(e='<span yes type=\"1\">'+i.btn[0]+\"</span>\",2===t&&(e='<span no type=\"0\">'+i.btn[1]+\"</span>\"+e),'<div class=\"layui-m-layerbtn\">'+e+\"</div>\"):\"\"}();if(i.fixed||(i.top=i.hasOwnProperty(\"top\")?i.top:100,i.style=i.style||\"\",i.style+=\" top:\"+(t.body.scrollTop+i.top)+\"px\"),2===i.type&&(i.content='<i></i><i class=\"layui-m-layerload\"></i><i></i><p>'+(i.content||\"\")+\"</p>\"),i.skin&&(i.anim=\"up\"),\"msg\"===i.skin&&(i.shade=!1),s.innerHTML=(i.shade?\"<div \"+(\"string\"==typeof i.shade?'style=\"'+i.shade+'\"':\"\")+' class=\"layui-m-layershade\"></div>':\"\")+'<div class=\"layui-m-layermain\" '+(i.fixed?\"\":'style=\"position:static;\"')+'><div class=\"layui-m-layersection\"><div class=\"layui-m-layerchild '+(i.skin?\"layui-m-layer-\"+i.skin+\" \":\"\")+(i.className?i.className:\"\")+\" \"+(i.anim?\"layui-m-anim-\"+i.anim:\"\")+'\" '+(i.style?'style=\"'+i.style+'\"':\"\")+\">\"+l+'<div class=\"layui-m-layercont\">'+i.content+\"</div>\"+d+\"</div></div></div>\",!i.type||2===i.type){var y=t[n](r[0]+i.type),u=y.length;u>=1&&c.close(y[0].getAttribute(\"index\"))}document.body.appendChild(s);var m=e.elem=a(\"#\"+e.id)[0];i.success&&i.success(m),e.index=o++,e.action(i,m)},d.prototype.action=function(e,t){var i=this;e.time&&(l.timer[i.index]=setTimeout(function(){c.close(i.index)},1e3*e.time));var a=function(){var t=this.getAttribute(\"type\");0==t?(e.no&&e.no(),c.close(i.index)):e.yes?e.yes(i.index):c.close(i.index)};if(e.btn)for(var s=t[n](\"layui-m-layerbtn\")[0].children,o=s.length,r=0;r<o;r++)l.touch(s[r],a);if(e.shade&&e.shadeClose){var d=t[n](\"layui-m-layershade\")[0];l.touch(d,function(){c.close(i.index,e.end)})}e.end&&(l.end[i.index]=e.end)};var c={v:\"2.0 m\",index:o,open:function(e){var t=new d(e||{});return t.index},close:function(e){var i=a(\"#\"+r[0]+e)[0];i&&(i.innerHTML=\"\",t.body.removeChild(i),clearTimeout(l.timer[e]),delete l.timer[e],\"function\"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[n](r[0]),i=0,a=e.length;i<a;i++)c.close(0|e[0].getAttribute(\"index\"))}};e(\"layer-mobile\",c)});layui.define(function(t){var e=function(){function t(t){return null==t?String(t):J[W.call(t)]||\"object\"}function e(e){return\"function\"==t(e)}function n(t){return null!=t&&t==t.window}function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function i(e){return\"object\"==t(e)}function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.prototype}function a(t){var e=!!t&&\"length\"in t&&t.length,r=T.type(t);return\"function\"!=r&&!n(t)&&(\"array\"==r||0===e||\"number\"==typeof e&&e>0&&e-1 in t)}function s(t){return A.call(t,function(t){return null!=t})}function u(t){return t.length>0?T.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,\"/\").replace(/([A-Z]+)([A-Z][a-z])/g,\"$1_$2\").replace(/([a-z\\d])([A-Z])/g,\"$1_$2\").replace(/_/g,\"-\").toLowerCase()}function l(t){return t in F?F[t]:F[t]=new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|$)\")}function f(t,e){return\"number\"!=typeof e||k[c(t)]?e:e+\"px\"}function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,\"\").getPropertyValue(\"display\"),e.parentNode.removeChild(e),\"none\"==n&&(n=\"block\"),$[t]=n),$[t]}function p(t){return\"children\"in t?D.call(t.children):T.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function d(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.length=r,this.selector=e||\"\"}function m(t,e,n){for(j in e)n&&(o(e[j])||Q(e[j]))?(o(e[j])&&!o(t[j])&&(t[j]={}),Q(e[j])&&!Q(t[j])&&(t[j]=[]),m(t[j],e[j],n)):e[j]!==E&&(t[j]=e[j])}function v(t,e){return null==e?T(t):T(t).filter(e)}function g(t,n,r,i){return e(n)?n.call(t,r,i):n}function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function x(t,e){var n=t.className||\"\",r=n&&n.baseVal!==E;return e===E?r?n.baseVal:n:void(r?n.baseVal=e:t.className=e)}function b(t){try{return t?\"true\"==t||\"false\"!=t&&(\"null\"==t?null:+t+\"\"==t?+t:/^[\\[\\{]/.test(t)?T.parseJSON(t):t):t}catch(e){return t}}function w(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)w(t.childNodes[n],e)}var E,j,T,S,C,N,O=[],P=O.concat,A=O.filter,D=O.slice,L=window.document,$={},F={},k={\"column-count\":1,columns:1,\"font-weight\":1,\"line-height\":1,opacity:1,\"z-index\":1,zoom:1},M=/^\\s*<(\\w+|!)[^>]*>/,R=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,Z=/^(?:body|html)$/i,q=/([A-Z])/g,H=[\"val\",\"css\",\"html\",\"text\",\"data\",\"width\",\"height\",\"offset\"],I=[\"after\",\"prepend\",\"before\",\"append\"],V=L.createElement(\"table\"),_=L.createElement(\"tr\"),B={tr:L.createElement(\"tbody\"),tbody:V,thead:V,tfoot:V,td:_,th:_,\"*\":L.createElement(\"div\")},U=/complete|loaded|interactive/,X=/^[\\w-]*$/,J={},W=J.toString,Y={},G=L.createElement(\"div\"),K={tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},Q=Array.isArray||function(t){return t instanceof Array};return Y.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=G).appendChild(t),r=~Y.qsa(i,e).indexOf(t),o&&G.removeChild(t),r},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():\"\"})},N=function(t){return A.call(t,function(e,n){return t.indexOf(e)==n})},Y.fragment=function(t,e,n){var r,i,a;return R.test(t)&&(r=T(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(z,\"<$1></$2>\")),e===E&&(e=M.test(t)&&RegExp.$1),e in B||(e=\"*\"),a=B[e],a.innerHTML=\"\"+t,r=T.each(D.call(a.childNodes),function(){a.removeChild(this)})),o(n)&&(i=T(r),T.each(n,function(t,e){H.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},Y.Z=function(t,e){return new d(t,e)},Y.isZ=function(t){return t instanceof Y.Z},Y.init=function(t,n){var r;if(!t)return Y.Z();if(\"string\"==typeof t)if(t=t.trim(),\"<\"==t[0]&&M.test(t))r=Y.fragment(t,RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}else{if(e(t))return T(L).ready(t);if(Y.isZ(t))return t;if(Q(t))r=s(t);else if(i(t))r=[t],t=null;else if(M.test(t))r=Y.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}}return Y.Z(r,t)},T=function(t,e){return Y.init(t,e)},T.extend=function(t){var e,n=D.call(arguments,1);return\"boolean\"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},Y.qsa=function(t,e){var n,r=\"#\"==e[0],i=!r&&\".\"==e[0],o=r||i?e.slice(1):e,a=X.test(o);return t.getElementById&&a&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:D.call(a&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},T.contains=L.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},T.type=t,T.isFunction=e,T.isWindow=n,T.isArray=Q,T.isPlainObject=o,T.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},T.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&\"boolean\"!=n&&(\"string\"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},T.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},T.camelCase=C,T.trim=function(t){return null==t?\"\":String.prototype.trim.call(t)},T.uuid=0,T.support={},T.expr={},T.noop=function(){},T.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r<t.length;r++)n=e(t[r],r),null!=n&&o.push(n);else for(i in t)n=e(t[i],i),null!=n&&o.push(n);return u(o)},T.each=function(t,e){var n,r;if(a(t)){for(n=0;n<t.length;n++)if(e.call(t[n],n,t[n])===!1)return t}else for(r in t)if(e.call(t[r],r,t[r])===!1)return t;return t},T.grep=function(t,e){return A.call(t,e)},window.JSON&&(T.parseJSON=JSON.parse),T.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(t,e){J[\"[object \"+e+\"]\"]=e.toLowerCase()}),T.fn={constructor:Y.Z,length:0,forEach:O.forEach,reduce:O.reduce,push:O.push,sort:O.sort,splice:O.splice,indexOf:O.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=Y.isZ(e)?e.toArray():e;return P.apply(Y.isZ(this)?this.toArray():this,n)},map:function(t){return T(T.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return T(D.apply(this,arguments))},ready:function(t){return U.test(L.readyState)&&L.body?t(T):L.addEventListener(\"DOMContentLoaded\",function(){t(T)},!1),this},get:function(t){return t===E?D.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return O.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):T(A.call(this,function(e){return Y.matches(e,t)}))},add:function(t,e){return T(N(this.concat(T(t,e))))},is:function(t){return this.length>0&&Y.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==E)this.each(function(e){t.call(this,e)||n.push(this)});else{var r=\"string\"==typeof t?this.filter(t):a(t)&&e(t.item)?D.call(t):T(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return T(n)},has:function(t){return this.filter(function(){return i(t)?T.contains(this,t):T(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:T(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:T(t)},find:function(t){var e,n=this;return e=t?\"object\"==typeof t?T(t).filter(function(){var t=this;return O.some.call(n,function(e){return T.contains(e,t)})}):1==this.length?T(Y.qsa(this[0],t)):this.map(function(){return Y.qsa(this,t)}):T()},closest:function(t,e){var n=[],i=\"object\"==typeof t&&T(t);return this.each(function(o,a){for(;a&&!(i?i.indexOf(a)>=0:Y.matches(a,t));)a=a!==e&&!r(a)&&a.parentNode;a&&n.indexOf(a)<0&&n.push(a)}),T(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=T.map(n,function(t){if((t=t.parentNode)&&!r(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(N(this.pluck(\"parentNode\")),t)},children:function(t){return v(this.map(function(){return p(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||D.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return A.call(p(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=\"\"})},pluck:function(t){return T.map(this,function(e){return e[t]})},show:function(){return this.each(function(){\"none\"==this.style.display&&(this.style.display=\"\"),\"none\"==getComputedStyle(this,\"\").getPropertyValue(\"display\")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=T(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){T(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){T(this[0]).before(t=T(t));for(var e;(e=t.children()).length;)t=e.first();T(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=T(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){T(this).replaceWith(T(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css(\"display\",\"none\")},toggle:function(t){return this.each(function(){var e=T(this);(t===E?\"none\"==e.css(\"display\"):t)?e.show():e.hide()})},prev:function(t){return T(this.pluck(\"previousElementSibling\")).filter(t||\"*\")},next:function(t){return T(this.pluck(\"nextElementSibling\")).filter(t||\"*\")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;T(this).empty().append(g(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=g(this,t,e,this.textContent);this.textContent=null==n?\"\":\"\"+n}):0 in this?this.pluck(\"textContent\").join(\"\"):null},attr:function(t,e){var n;return\"string\"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(j in t)y(this,j,t[j]);else y(this,t,g(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:E},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(\" \").forEach(function(t){y(this,t)},this)})},prop:function(t,e){return t=K[t]||t,1 in arguments?this.each(function(n){this[t]=g(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=K[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n=\"data-\"+t.replace(q,\"-$1\").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?b(r):E},val:function(t){return 0 in arguments?(null==t&&(t=\"\"),this.each(function(e){this.value=g(this,t,e,this.value)})):this[0]&&(this[0].multiple?T(this[0]).find(\"option\").filter(function(){return this.selected}).pluck(\"value\"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=T(this),r=g(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};\"static\"==n.css(\"position\")&&(o.position=\"relative\"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!T.contains(L.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r=this[0];if(\"string\"==typeof e){if(!r)return;return r.style[C(e)]||getComputedStyle(r,\"\").getPropertyValue(e)}if(Q(e)){if(!r)return;var i={},o=getComputedStyle(r,\"\");return T.each(e,function(t,e){i[e]=r.style[C(e)]||o.getPropertyValue(e)}),i}}var a=\"\";if(\"string\"==t(e))n||0===n?a=c(e)+\":\"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(j in e)e[j]||0===e[j]?a+=c(j)+\":\"+f(j,e[j])+\";\":this.each(function(){this.style.removeProperty(c(j))});return this.each(function(){this.style.cssText+=\";\"+a})},index:function(t){return t?this.indexOf(T(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(x(t))},l(t))},addClass:function(t){return t?this.each(function(e){if(\"className\"in this){S=[];var n=x(this),r=g(this,t,e,n);r.split(/\\s+/g).forEach(function(t){T(this).hasClass(t)||S.push(t)},this),S.length&&x(this,n+(n?\" \":\"\")+S.join(\" \"))}}):this},removeClass:function(t){return this.each(function(e){if(\"className\"in this){if(t===E)return x(this,\"\");S=x(this),g(this,t,e,S).split(/\\s+/g).forEach(function(t){S=S.replace(l(t),\" \")}),x(this,S.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=T(this),i=g(this,t,n,x(this));i.split(/\\s+/g).forEach(function(t){(e===E?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e=\"scrollTop\"in this[0];return t===E?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e=\"scrollLeft\"in this[0];return t===E?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=Z.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(T(t).css(\"margin-top\"))||0,n.left-=parseFloat(T(t).css(\"margin-left\"))||0,r.top+=parseFloat(T(e[0]).css(\"border-top-width\"))||0,r.left+=parseFloat(T(e[0]).css(\"border-left-width\"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!Z.test(t.nodeName)&&\"static\"==T(t).css(\"position\");)t=t.offsetParent;return t})}},T.fn.detach=T.fn.remove,[\"width\",\"height\"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});T.fn[t]=function(i){var o,a=this[0];return i===E?n(a)?a[\"inner\"+e]:r(a)?a.documentElement[\"scroll\"+e]:(o=this.offset())&&o[t]:this.each(function(e){a=T(this),a.css(t,g(this,i,e,a[t]()))})}}),I.forEach(function(e,n){var r=n%2;T.fn[e]=function(){var e,i,o=T.map(arguments,function(n){var r=[];return e=t(n),\"array\"==e?(n.forEach(function(t){return t.nodeType!==E?r.push(t):T.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(Y.fragment(t)))}),r):\"object\"==e||null==n?n:Y.fragment(n)}),a=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var s=T.contains(L.documentElement,i);o.forEach(function(t){if(a)t=t.cloneNode(!0);else if(!i)return T(t).remove();i.insertBefore(t,e),s&&w(t,function(t){if(!(null==t.nodeName||\"SCRIPT\"!==t.nodeName.toUpperCase()||t.type&&\"text/javascript\"!==t.type||t.src)){var e=t.ownerDocument?t.ownerDocument.defaultView:window;e.eval.call(e,t.innerHTML)}})})})},T.fn[r?e+\"To\":\"insert\"+(n?\"Before\":\"After\")]=function(t){return T(t)[e](this),this}}),Y.Z.prototype=d.prototype=T.fn,Y.uniq=N,Y.deserializeValue=b,T.zepto=Y,T}();!function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).filter(function(t){return t&&(!n.e||t.e==n.e)&&(!n.ns||s.test(t.ns))&&(!o||e(t.fn)===e(o))&&(!a||t.sel==a)})}function r(t){var e=(\"\"+t).split(\".\");return{e:e[0],ns:e.slice(1).sort().join(\" \")}}function i(t){return new RegExp(\"(?:^| )\"+t.replace(\" \",\" .* ?\")+\"(?: |$)\")}function o(t,e){return t.del&&!y&&t.e in x||!!e}function a(t){return b[t]||y&&x[t]||t}function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\\s/).forEach(function(e){if(\"ready\"==e)return t(document).ready(s);var i=r(e);i.fn=s,i.sel=l,i.e in b&&(s=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return i.fn.apply(this,arguments)}),i.del=h;var d=h||s;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=d.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),\"addEventListener\"in n&&n.addEventListener(a(i.e),i.proxy,o(i,p))})}function u(t,r,i,s,u){var c=e(t);(r||\"\").split(/\\s/).forEach(function(e){n(t,e,i,s).forEach(function(e){delete v[c][e.i],\"removeEventListener\"in t&&t.removeEventListener(a(e.e),e.proxy,o(e,u))})})}function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,function(t,r){var i=n[t];e[t]=function(){return this[r]=w,i&&i.apply(n,arguments)},e[r]=E}),e.timeStamp||(e.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:\"returnValue\"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,p=Array.prototype.slice,d=t.isFunction,m=function(t){return\"string\"==typeof t},v={},g={},y=\"onfocusin\"in window,x={focus:\"focusin\",blur:\"focusout\"},b={mouseenter:\"mouseover\",mouseleave:\"mouseout\"};g.click=g.mousedown=g.mouseup=g.mousemove=\"MouseEvents\",t.event={add:s,remove:u},t.proxy=function(n,r){var i=2 in arguments&&p.call(arguments,2);if(d(n)){var o=function(){return n.apply(r,i?i.concat(p.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError(\"expected function\")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var w=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,T={preventDefault:\"isDefaultPrevented\",stopImmediatePropagation:\"isImmediatePropagationStopped\",stopPropagation:\"isPropagationStopped\"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var a,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||d(i)||i===!1||(i=r,r=n,n=f),i!==f&&r!==!1||(i=r,r=f),i===!1&&(i=E),h.each(function(f,h){o&&(a=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);if(o&&o!==h)return r=t.extend(l(e),{currentTarget:o,liveFired:h}),(a||i).apply(o,[r].concat(p.call(arguments,1)))}),s(h,e,i,r,n,c||a)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||d(r)||r===!1||(r=n,n=f),r===!1&&(r=E),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in x&&\"function\"==typeof this[e.type]?this[e.type]():\"dispatchEvent\"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(a,s){i=l(m(e)?t.Event(e):e),i._args=r,i.target=s,t.each(n(s,e.type||e),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},\"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error\".split(\" \").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||\"Events\"),r=!0;if(e)for(var i in e)\"bubbles\"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(e),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){if(t.global)return e(n||x,r,i)}function r(e){e.global&&0===t.active++&&n(e,null,\"ajaxStart\")}function i(e){e.global&&!--t.active&&n(e,null,\"ajaxStop\")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(e,r,\"ajaxBeforeSend\",[t,e])!==!1&&void n(e,r,\"ajaxSend\",[t,e])}function a(t,e,r,i){var o=r.context,a=\"success\";r.success.call(o,t,a,e),i&&i.resolveWith(o,[t,a,e]),n(r,o,\"ajaxSuccess\",[e,r,t]),u(a,e,r)}function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectWith(a,[r,e,t]),n(i,a,\"ajaxError\",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,\"ajaxComplete\",[e,r]),i(r)}function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function l(){}function f(t){return t&&(t=t.split(\";\",2)[0]),t&&(t==T?\"html\":t==j?\"json\":w.test(t)?\"script\":E.test(t)&&\"xml\")||\"text\"}function h(t,e){return\"\"==e?t:(t+\"&\"+e).replace(/[&?]{1,2}/,\"?\")}function p(e){e.processData&&e.data&&\"string\"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&\"GET\"!=e.type.toUpperCase()&&\"jsonp\"!=e.dataType||(e.url=h(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+\"[\"+(s||\"object\"==o||\"array\"==o?n:\"\")+\"]\"),!i&&a?e.add(u.name,u.value):\"array\"==o||!r&&\"object\"==o?m(e,u,r,n):e.add(n,u)})}var v,g,y=+new Date,x=window.document,b=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,w=/^(?:text|application)\\/javascript/i,E=/^(?:text|application)\\/xml/i,j=\"application/json\",T=\"text/html\",S=/^\\s*$/,C=x.createElement(\"a\");C.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!(\"type\"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||\"Zepto\"+y++,l=x.createElement(\"script\"),f=window[c],h=function(e){t(l).triggerHandler(\"error\",e||\"abort\")},p={abort:h};return n&&n.promise(p),t(l).on(\"load error\",function(o,u){clearTimeout(i),t(l).off().remove(),\"error\"!=o.type&&r?a(r[0],p,e,n):s(null,u||\"error\",p,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(p,e)===!1?(h(\"abort\"),p):(window[c]=function(){r=arguments},l.src=e.url.replace(/\\?(.+)=\\?/,\"?$1=\"+c),x.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h(\"timeout\")},e.timeout)),p)},t.ajaxSettings={type:\"GET\",beforeSend:l,success:l,error:l,complete:l,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:\"text/javascript, application/javascript, application/x-javascript\",json:j,xml:\"application/xml, text/xml\",html:T,text:\"text/plain\"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:l},t.ajax=function(e){var n,i,u=t.extend({},e||{}),d=t.Deferred&&t.Deferred();for(v in t.ajaxSettings)void 0===u[v]&&(u[v]=t.ajaxSettings[v]);r(u),u.crossDomain||(n=x.createElement(\"a\"),n.href=u.url,n.href=n.href,u.crossDomain=C.protocol+\"//\"+C.host!=n.protocol+\"//\"+n.host),u.url||(u.url=window.location.toString()),(i=u.url.indexOf(\"#\"))>-1&&(u.url=u.url.slice(0,i)),p(u);var m=u.dataType,y=/\\?.+=\\?/.test(u.url);if(y&&(m=\"jsonp\"),u.cache!==!1&&(e&&e.cache===!0||\"script\"!=m&&\"jsonp\"!=m)||(u.url=h(u.url,\"_=\"+Date.now())),\"jsonp\"==m)return y||(u.url=h(u.url,u.jsonp?u.jsonp+\"=?\":u.jsonp===!1?\"\":\"callback=?\")),t.ajaxJSONP(u,d);var b,w=u.accepts[m],E={},j=function(t,e){E[t.toLowerCase()]=[t,e]},T=/^([\\w-]+:)\\/\\//.test(u.url)?RegExp.$1:window.location.protocol,N=u.xhr(),O=N.setRequestHeader;if(d&&d.promise(N),u.crossDomain||j(\"X-Requested-With\",\"XMLHttpRequest\"),j(\"Accept\",w||\"*/*\"),(w=u.mimeType||w)&&(w.indexOf(\",\")>-1&&(w=w.split(\",\",2)[0]),N.overrideMimeType&&N.overrideMimeType(w)),(u.contentType||u.contentType!==!1&&u.data&&\"GET\"!=u.type.toUpperCase())&&j(\"Content-Type\",u.contentType||\"application/x-www-form-urlencoded\"),u.headers)for(g in u.headers)j(g,u.headers[g]);if(N.setRequestHeader=j,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=l,clearTimeout(b);var e,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&\"file:\"==T){if(m=m||f(u.mimeType||N.getResponseHeader(\"content-type\")),\"arraybuffer\"==N.responseType||\"blob\"==N.responseType)e=N.response;else{e=N.responseText;try{e=c(e,m,u),\"script\"==m?(0,eval)(e):\"xml\"==m?e=N.responseXML:\"json\"==m&&(e=S.test(e)?null:t.parseJSON(e))}catch(r){n=r}if(n)return s(n,\"parsererror\",N,u,d)}a(e,N,u,d)}else s(N.statusText||null,N.status?\"error\":\"abort\",N,u,d)}},o(N,u)===!1)return N.abort(),s(null,\"abort\",N,u,d),N;var P=!(\"async\"in u)||u.async;if(N.open(u.type,u.url,P,u.username,u.password),u.xhrFields)for(g in u.xhrFields)N[g]=u.xhrFields[g];for(g in E)O.apply(N,E[g]);return u.timeout>0&&(b=setTimeout(function(){N.onreadystatechange=l,N.abort(),s(null,\"timeout\",N,u,d)},u.timeout)),N.send(u.data?u.data:null),N},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type=\"POST\",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType=\"json\",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,a=e.split(/\\s/),s=d(e,n,r),u=s.success;return a.length>1&&(s.url=a[0],i=a[1]),s.success=function(e){o.html(i?t(\"<div>\").html(e.replace(b,\"\")).find(i):e),u&&u.apply(o,arguments)},t.ajax(s),this};var N=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=\"\"),this.push(N(e)+\"=\"+N(n))},m(r,e,n),r.join(\"&\").replace(/%20/g,\"+\")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&\"fieldset\"!=o.nodeName.toLowerCase()&&!o.disabled&&\"submit\"!=n&&\"reset\"!=n&&\"button\"!=n&&\"file\"!=n&&(\"radio\"!=n&&\"checkbox\"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+\"=\"+encodeURIComponent(e.value))}),t.join(\"&\")},t.fn.submit=function(e){if(0 in arguments)this.bind(\"submit\",e);else if(this.length){var n=t.Event(\"submit\");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(t){var e=getComputedStyle;window.getComputedStyle=function(t,n){try{return e(t,n)}catch(r){return null}}}}(),t(\"zepto\",e)});layui.define([\"layer-mobile\",\"zepto\"],function(e){\"use strict\";var t=layui.zepto,a=layui[\"layer-mobile\"],i=(layui.device(),\"layui-upload-enter\"),n=\"layui-upload-iframe\",r={icon:2,shift:6},o={file:\"文件\",video:\"视频\",audio:\"音频\"};a.msg=function(e){return a.open({content:e||\"\",skin:\"msg\",time:2})};var s=function(e){this.options=e};s.prototype.init=function(){var e=this,a=e.options,r=t(\"body\"),s=t(a.elem||\".layui-upload-file\"),u=t('<iframe id=\"'+n+'\" class=\"'+n+'\" name=\"'+n+'\"></iframe>');return t(\"#\"+n)[0]||r.append(u),s.each(function(r,s){s=t(s);var u='<form target=\"'+n+'\" method=\"'+(a.method||\"post\")+'\" key=\"set-mine\" enctype=\"multipart/form-data\" action=\"'+(a.url||\"\")+'\"></form>',l=s.attr(\"lay-type\")||a.type;a.unwrap||(u='<div class=\"layui-box layui-upload-button\">'+u+'<span class=\"layui-upload-icon\"><i class=\"layui-icon\">&#xe608;</i>'+(s.attr(\"lay-title\")||a.title||\"上传\"+(o[l]||\"图片\"))+\"</span></div>\"),u=t(u),a.unwrap||u.on(\"dragover\",function(e){e.preventDefault(),t(this).addClass(i)}).on(\"dragleave\",function(){t(this).removeClass(i)}).on(\"drop\",function(){t(this).removeClass(i)}),s.parent(\"form\").attr(\"target\")===n&&(a.unwrap?s.unwrap():(s.parent().next().remove(),s.unwrap().unwrap())),s.wrap(u),s.off(\"change\").on(\"change\",function(){e.action(this,l)})})},s.prototype.action=function(e,i){var o=this,s=o.options,u=e.value,l=t(e),p=l.attr(\"lay-ext\")||s.ext||\"\";if(u){switch(i){case\"file\":if(p&&!RegExp(\"\\\\w\\\\.(\"+p+\")$\",\"i\").test(escape(u)))return a.msg(\"不支持该文件格式\",r),e.value=\"\";break;case\"video\":if(!RegExp(\"\\\\w\\\\.(\"+(p||\"avi|mp4|wma|rmvb|rm|flash|3gp|flv\")+\")$\",\"i\").test(escape(u)))return a.msg(\"不支持该视频格式\",r),e.value=\"\";break;case\"audio\":if(!RegExp(\"\\\\w\\\\.(\"+(p||\"mp3|wav|mid\")+\")$\",\"i\").test(escape(u)))return a.msg(\"不支持该音频格式\",r),e.value=\"\";break;default:if(!RegExp(\"\\\\w\\\\.(\"+(p||\"jpg|png|gif|bmp|jpeg\")+\")$\",\"i\").test(escape(u)))return a.msg(\"不支持该图片格式\",r),e.value=\"\"}s.before&&s.before(e),l.parent().submit();var c=t(\"#\"+n),f=setInterval(function(){var t;try{t=c.contents().find(\"body\").text()}catch(i){a.msg(\"上传接口存在跨域\",r),clearInterval(f)}if(t){clearInterval(f),c.contents().find(\"body\").html(\"\");try{t=JSON.parse(t)}catch(i){return t={},a.msg(\"请对上传接口返回JSON字符\",r)}\"function\"==typeof s.success&&s.success(t,e)}},30);e.value=\"\"}},e(\"upload-mobile\",function(e){var t=new s(e=e||{});t.init()})});layui.define(function(i){i(\"layim-mobile\",layui.v)});layui[\"layui.mobile\"]||layui.config({base:layui.cache.dir+\"lay/modules/mobile/\"}).extend({\"layer-mobile\":\"layer-mobile\",zepto:\"zepto\",\"upload-mobile\":\"upload-mobile\",\"layim-mobile\":\"layim-mobile\"}),layui.define([\"layer-mobile\",\"zepto\",\"layim-mobile\"],function(l){l(\"mobile\",{layer:layui[\"layer-mobile\"],layim:layui[\"layim-mobile\"]})});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/rate.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n=\"rate\",t=\"layui-rate\",o=\"layui-icon-rate\",s=\"layui-icon-rate-solid\",u=\"layui-icon-rate-half\",r=\"layui-icon-rate-solid layui-icon-rate-half\",c=\"layui-icon-rate-solid layui-icon-rate\",f=\"layui-icon-rate layui-icon-rate-half\",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:\"\"},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style=\"color: '+i.theme+';\"':\"\";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class=\"layui-rate\" '+(i.readonly?\"readonly\":\"\")+\">\",u=1;u<=i.length;u++){var r='<li class=\"layui-inline\"><i class=\"layui-icon '+(u>Math.floor(i.value)?o:s)+'\" '+l+\"></i></li>\";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class=\"layui-icon layui-icon-rate-half\" '+l+\"></i></li>\":n+=r}n+=\"</ul>\"+(i.text?'<span class=\"layui-inline\">'+i.value+\"星\":\"\")+\"</span>\";var c=i.elem,f=c.next(\".\"+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next(\"span\"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass(\"layui-inline\"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find(\"i\").width();l.children(\"li\").each(function(e){var t=e+1,v=a(this);v.on(\"click\",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next(\"span\").text(i.value+\"星\"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on(\"mousemove\",function(e){if(l.find(\"i\").each(function(){a(this).addClass(o).removeClass(r)}),l.find(\"i:lt(\"+t+\")\").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children(\"i\").addClass(u).removeClass(s)}}),v.on(\"mouseleave\",function(){l.find(\"i\").each(function(){a(this).addClass(o).removeClass(r)}),l.find(\"i:lt(\"+Math.floor(i.value)+\")\").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children(\"li:eq(\"+Math.floor(i.value)+\")\").children(\"i\").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/slider.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide(\"set\",i,t||0)},config:i}},n=\"slider\",l=\"layui-disabled\",s=\"layui-slider\",r=\"layui-slider-bar\",o=\"layui-slider-wrap\",u=\"layui-slider-wrap-btn\",d=\"layui-slider-tips\",v=\"layui-slider-input\",c=\"layui-slider-input-txt\",m=\"layui-slider-input-btn\",p=\"layui-slider-hover\",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:\"default\",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:\"#009688\"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.max<t.min&&(t.max=t.min+t.step),t.range){t.value=\"object\"==typeof t.value?t.value:[t.min,t.value];var a=Math.min(t.value[0],t.value[1]),n=Math.max(t.value[0],t.value[1]);t.value[0]=a>t.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+\"%\";r+=\"%\",v+=\"%\"}else{\"object\"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.value<t.min&&(t.value=t.min),t.value>t.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+\"%\"}var p=t.disabled?\"#c2c2c2\":t.theme,f='<div class=\"layui-slider '+(\"vertical\"===t.type?\"layui-slider-vertical\":\"\")+'\">'+(t.tips?'<div class=\"layui-slider-tips\"></div>':\"\")+'<div class=\"layui-slider-bar\" style=\"background:'+p+\"; \"+(\"vertical\"===t.type?\"height\":\"width\")+\":\"+m+\";\"+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+(r||0)+';\"></div><div class=\"layui-slider-wrap\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+(r||m)+';\"><div class=\"layui-slider-wrap-btn\" style=\"border: 2px solid '+p+';\"></div></div>'+(t.range?'<div class=\"layui-slider-wrap\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+v+';\"><div class=\"layui-slider-wrap-btn\" style=\"border: 2px solid '+p+';\"></div></div>':\"\")+\"</div>\",h=i(t.elem),y=h.next(\".\"+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find(\".\"+o).eq(0).data(\"value\",t.value[0]),e.elemTemp.find(\".\"+o).eq(1).data(\"value\",t.value[1])):e.elemTemp.find(\".\"+o).data(\"value\",t.value),h.html(e.elemTemp),\"vertical\"===t.type&&e.elemTemp.height(t.height+\"px\"),t.showstep){for(var g=(t.max-t.min)/t.step,b=\"\",x=1;x<g+1;x++){var T=100*x/g;T<100&&(b+='<div class=\"layui-slider-step\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+T+'%\"></div>')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('<div class=\"layui-slider-input layui-input\"><div class=\"layui-slider-input-txt\"><input type=\"text\" class=\"layui-input\"></div><div class=\"layui-slider-input-btn\"><i class=\"layui-icon layui-icon-up\"></i><i class=\"layui-icon layui-icon-down\"></i></div></div>');h.css(\"position\",\"relative\"),h.append(w),h.find(\".\"+c).children(\"input\").val(t.value),\"vertical\"===t.type?w.css({left:0,top:-48}):e.elemTemp.css(\"margin-right\",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find(\".\"+u).addClass(l)):e.slide(),e.elemTemp.find(\".\"+u).on(\"mouseover\",function(){var a=\"vertical\"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find(\".\"+o),l=\"vertical\"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data(\"value\"),u=t.setTips?t.setTips(r):r;e.elemTemp.find(\".\"+d).html(u),\"vertical\"===t.type?e.elemTemp.find(\".\"+d).css({bottom:s+\"%\",\"margin-bottom\":\"20px\",display:\"inline-block\"}):e.elemTemp.find(\".\"+d).css({left:s+\"%\",display:\"inline-block\"})}).on(\"mouseout\",function(){e.elemTemp.find(\".\"+d).css(\"display\",\"none\")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return\"vertical\"===l.type?l.height:s[0].offsetWidth},h=s.find(\".\"+o),y=s.next(\".\"+v),g=y.children(\".\"+c).children(\"input\").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css(\"vertical\"===l.type?\"bottom\":\"left\",e+\"%\");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;\"vertical\"===l.type?(s.find(\".\"+d).css({bottom:e+\"%\",\"margin-bottom\":\"20px\"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find(\".\"+d).css(\"left\",e+\"%\"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);\"vertical\"===l.type?s.find(\".\"+r).css({height:o+\"%\",bottom:n+\"%\"}):s.find(\".\"+r).css({width:o+\"%\",left:n+\"%\"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children(\".\"+c).children(\"input\").val(g),h.eq(i).data(\"value\",u),u=l.setTips?l.setTips(u):u,s.find(\".\"+d).html(u),l.range){var v=[h.eq(0).data(\"value\"),h.eq(1).data(\"value\")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['<div class=\"layui-auxiliar-moving\" id=\"LAY-slider-moving\"></div'].join(\"\")),M=function(e,t){var a=function(){t&&t(),w.remove()};i(\"#LAY-slider-moving\")[0]||i(\"body\").append(w),w.on(\"mousemove\",e),w.on(\"mouseup\",a).on(\"mouseleave\",a)};if(\"set\"===e)return x(t,a);s.find(\".\"+u).each(function(e){var t=i(this);t.on(\"mousedown\",function(i){i=i||window.event;var a=t.parent()[0].offsetLeft,n=i.clientX;\"vertical\"===l.type&&(a=f()-t.parent()[0].offsetTop-h.height(),n=i.clientY);var r=function(i){i=i||window.event;var r=a+(\"vertical\"===l.type?n-i.clientY:i.clientX-n);r<0&&(r=0),r>f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find(\".\"+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find(\".\"+d).hide()};M(r,o)})}),s.on(\"click\",function(e){var t=i(\".\"+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n=\"vertical\"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?\"vertical\"===l.type?Math.abs(n-parseInt(i(h[0]).css(\"bottom\")))>Math.abs(n-parseInt(i(h[1]).css(\"bottom\")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children(\".\"+m).fadeIn(\"fast\")},function(){var e=i(this);e.children(\".\"+m).fadeOut(\"fast\")}),y.children(\".\"+m).children(\"i\").each(function(e){i(this).on(\"click\",function(){g=1==e?g-l.step<l.min?l.min:Number(g)-l.step:Number(g)+l.step>l.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=e<l.min?l.min:e,e=e>l.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children(\".\"+c).children(\"input\").on(\"keydown\",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on(\"change\",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/table.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define([\"laytpl\",\"laypage\",\"layer\",\"form\",\"util\"],function(e){\"use strict\";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:\"LAY_CHECKED\",indexName:\"LAY_TABLE_INDEX\"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,u,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)},config:t}},s=function(e){var t=c.config[e];return t||o.error(\"The ID option was not found in the table instance\"),t||null},u=\"table\",h=\".layui-table\",y=\"layui-hide\",f=\"layui-none\",p=\"layui-table-view\",v=\".layui-table-tool\",m=\".layui-table-box\",g=\".layui-table-init\",b=\".layui-table-header\",x=\".layui-table-body\",k=\".layui-table-main\",C=\".layui-table-fixed\",w=\".layui-table-fixed-l\",T=\".layui-table-fixed-r\",A=\".layui-table-total\",L=\".layui-table-page\",S=\".layui-table-sort\",N=\"layui-table-edit\",W=\"layui-table-hover\",_=function(e){var t='{{#if(item2.colspan){}} colspan=\"{{item2.colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{item2.rowspan}}\"{{#}}}';return e=e||{},['<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',\"<thead>\",\"{{# layui.each(d.data.cols, function(i1, item1){ }}\",\"<tr>\",\"{{# layui.each(item1, function(i2, item2){ }}\",'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}','{{# if(item2.fixed === \"right\"){ right = true; } }}',function(){return e.fixed&&\"right\"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== \"right\"){ }}':\"right\"===e.fixed?'{{# if(item2.fixed === \"right\"){ }}':\"\"}(),\"{{# var isSort = !(item2.colGroup) && item2.sort; }}\",'<th data-field=\"{{ item2.field||i2 }}\" data-key=\"{{d.index}}-{{i1}}-{{i2}}\" {{# if( item2.parentKey){ }}data-parentkey=\"{{ item2.parentKey }}\"{{# } }} {{# if(item2.minWidth){ }}data-minwidth=\"{{item2.minWidth}}\"{{# } }} '+t+' {{# if(item2.unresize || item2.colGroup){ }}data-unresize=\"true\"{{# } }} class=\"{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}\">','<div class=\"layui-table-cell laytable-cell-',\"{{# if(item2.colGroup){ }}\",\"group\",\"{{# } else { }}\",\"{{d.index}}-{{i1}}-{{i2}}\",'{{# if(item2.type !== \"normal\"){ }}',\" laytable-cell-{{ item2.type }}\",\"{{# } }}\",\"{{# } }}\",'\" {{#if(item2.align){}}align=\"{{item2.align}}\"{{#}}}>','{{# if(item2.type === \"checkbox\"){ }}','<input type=\"checkbox\" name=\"layTableCheckbox\" lay-skin=\"primary\" lay-filter=\"layTableAllChoose\" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>',\"{{# } else { }}\",'<span>{{item2.title||\"\"}}</span>',\"{{# if(isSort){ }}\",'<span class=\"layui-table-sort layui-inline\"><i class=\"layui-edge layui-table-sort-asc\" title=\"升序\"></i><i class=\"layui-edge layui-table-sort-desc\" title=\"降序\"></i></span>',\"{{# } }}\",\"{{# } }}\",\"</div>\",\"</th>\",e.fixed?\"{{# }; }}\":\"\",\"{{# }); }}\",\"</tr>\",\"{{# }); }}\",\"</thead>\",\"</table>\"].join(\"\")},E=['<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',\"<tbody></tbody>\",\"</table>\"].join(\"\"),z=['<div class=\"layui-form layui-border-box {{d.VIEW_CLASS}}\" lay-filter=\"LAY-table-{{d.index}}\" lay-id=\"{{ d.data.id }}\" style=\"{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}\">',\"{{# if(d.data.toolbar){ }}\",'<div class=\"layui-table-tool\">','<div class=\"layui-table-tool-temp\"></div>','<div class=\"layui-table-tool-self\"></div>',\"</div>\",\"{{# } }}\",'<div class=\"layui-table-box\">',\"{{# if(d.data.loading){ }}\",'<div class=\"layui-table-init\" style=\"background-color: #fff;\">','<i class=\"layui-icon layui-icon-loading layui-icon\"></i>',\"</div>\",\"{{# } }}\",\"{{# var left, right; }}\",'<div class=\"layui-table-header\">',_(),\"</div>\",'<div class=\"layui-table-body layui-table-main\">',E,\"</div>\",\"{{# if(left){ }}\",'<div class=\"layui-table-fixed layui-table-fixed-l\">','<div class=\"layui-table-header\">',_({fixed:!0}),\"</div>\",'<div class=\"layui-table-body\">',E,\"</div>\",\"</div>\",\"{{# }; }}\",\"{{# if(right){ }}\",'<div class=\"layui-table-fixed layui-table-fixed-r\">','<div class=\"layui-table-header\">',_({fixed:\"right\"}),'<div class=\"layui-table-mend\"></div>',\"</div>\",'<div class=\"layui-table-body\">',E,\"</div>\",\"</div>\",\"{{# }; }}\",\"</div>\",\"{{# if(d.data.totalRow){ }}\",'<div class=\"layui-table-total\">','<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>','<tbody><tr><td><div class=\"layui-table-cell\" style=\"visibility: hidden;\">Total</div></td></tr></tbody>',\"</table>\",\"</div>\",\"{{# } }}\",\"{{# if(d.data.page){ }}\",'<div class=\"layui-table-page\">','<div id=\"layui-table-page{{d.index}}\"></div>',\"</div>\",\"{{# } }}\",\"<style>\",\"{{# layui.each(d.data.cols, function(i1, item1){\",\"layui.each(item1, function(i2, item2){ }}\",\".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ \",\"{{# if(item2.width){ }}\",\"width: {{item2.width}}px;\",\"{{# } }}\",\" }\",\"{{# });\",\"}); }}\",\"</style>\",\"</div>\"].join(\"\"),H=t(window),R=t(document),F=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};F.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:[\"filter\",\"exports\",\"print\"],autoSort:!0,text:{none:\"无数据\"}},F.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr(\"id\")||e.index,a.request=t.extend({pageName:\"page\",limitName:\"limit\"},a.request),a.response=t.extend({statusName:\"code\",statusCode:0,msgName:\"msg\",dataName:\"data\",countName:\"count\"},a.response),\"object\"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split(\"-\")[1],a.height=H.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next(\".\"+p),o=e.elem=t(i(z).render({VIEW_CLASS:p,data:a,index:e.index}));if(a.index=e.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(v),e.layBox=o.find(m),e.layHeader=o.find(b),e.layMain=o.find(k),e.layBody=o.find(x),e.layFixed=o.find(C),e.layFixLeft=o.find(w),e.layFixRight=o.find(T),e.layTotal=o.find(A),e.layPage=o.find(L),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(b).find(\"th\");r.height(e.layHeader.height()-1-parseFloat(r.css(\"padding-top\"))-parseFloat(r.css(\"padding-bottom\")))}e.pullData(e.page),e.events()},F.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type=\"checkbox\"),e.space&&(e.type=\"space\"),e.type||(e.type=\"normal\"),\"normal\"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},F.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l=\"none\"===t.css(\"display\")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),\"width\"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+\"-\"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+\"-\"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},F.prototype.renderToolbar=function(){var e=this,a=e.config,l=['<div class=\"layui-inline\" lay-event=\"add\"><i class=\"layui-icon layui-icon-add-1\"></i></div>','<div class=\"layui-inline\" lay-event=\"update\"><i class=\"layui-icon layui-icon-edit\"></i></div>','<div class=\"layui-inline\" lay-event=\"delete\"><i class=\"layui-icon layui-icon-delete\"></i></div>'].join(\"\"),n=e.layTool.find(\".layui-table-tool-temp\");if(\"default\"===a.toolbar)n.html(l);else if(\"string\"==typeof a.toolbar){var o=t(a.toolbar).html()||\"\";o&&n.html(i(o).render(a))}var r={filter:{title:\"筛选列\",layEvent:\"LAYTABLE_COLS\",icon:\"layui-icon-cols\"},exports:{title:\"导出\",layEvent:\"LAYTABLE_EXPORT\",icon:\"layui-icon-export\"},print:{title:\"打印\",layEvent:\"LAYTABLE_PRINT\",icon:\"layui-icon-print\"}},d=[];\"object\"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i=r[t];i&&d.push('<div class=\"layui-inline\" title=\"'+i.title+'\" lay-event=\"'+i.layEvent+'\"><i class=\"layui-icon '+i.icon+'\"></i></div>')}),e.layTool.find(\".layui-table-tool-self\").html(d.join(\"\"))},F.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key=\"'+a.index+\"-\"+t+'\"]'),n=parseInt(l.attr(\"colspan\"))||0;if(l[0]){var o=t.split(\"-\"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr(\"colspan\",n),l[n<1?\"addClass\":\"removeClass\"](y),r.colspan=n,r.hide=n<1;var d=l.data(\"parentkey\");d&&i.setParentCol(e,d)}},F.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},F.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit(\"width\");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return\"line\"===t.skin||\"nob\"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&l<s&&(a--,c=s):(c=d.width||0,/\\d+%$/.test(c)?(c=Math.floor(parseFloat(c)/100*o),c<s&&(c=s)):c||(d.width=c=0,a++)),d.hide&&(c=0),n+=c)):void r.splice(i,1)})}),o>n&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+\"-\"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+\"px\"}):/\\d+%$/.test(a.width)&&e.getCssRule(t.index+\"-\"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+\"px\"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children(\"table\").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find(\"thead th:last-child\"),i=t.data(\"field\"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data(\"key\");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+\"px\",e.layMain.height()-e.layMain.prop(\"clientHeight\")>0&&(t.style.width=parseFloat(t.style.width)-1+\"px\")})}e.loading(!0)},F.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},F.prototype.reload=function(e){var i=this;i.config.data&&i.config.data.constructor===Array&&delete i.config.data,i.config=t.extend({},i.config,e),i.render()},F.prototype.page=1,F.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){\"object\"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf(\"application/json\")&&(d=JSON.stringify(d)),t.ajax({type:a.method||\"get\",url:a.url,contentType:a.contentType,data:d,dataType:\"json\",headers:a.headers||{},success:function(t){\"function\"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.layMain.html('<div class=\"'+f+'\">'+(t[n.msgName]||\"返回的数据不符合规范，正确的成功状态码 (\"+n.statusName+\") 应为：\"+n.statusCode)+\"</div>\")):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+\" ms\"),i.setColsWidth(),\"function\"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.layMain.html('<div class=\"'+f+'\">数据接口请求异常：'+t+\"</div>\"),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,a.data.length),o(),i.setColsWidth(),\"function\"==typeof a.done&&a.done(c,e,c[n.countName])}},F.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},F.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,u=e[s.response.dataName]||[],h=[],p=[],v=[],m=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(u,function(a,l){var o=[],u=[],f=[],m=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+\"-\"+r.key,p=l[c];if(void 0!==p&&null!==p||(p=\"\"),!r.colGroup){var v=['<td data-field=\"'+c+'\" data-key=\"'+h+'\" '+function(){var e=[];return r.edit&&e.push('data-edit=\"'+r.edit+'\"'),r.align&&e.push('align=\"'+r.align+'\"'),r.templet&&e.push('data-content=\"'+p+'\"'),r.toolbar&&e.push('data-off=\"true\"'),r.event&&e.push('lay-event=\"'+r.event+'\"'),r.style&&e.push('style=\"'+r.style+'\"'),r.minWidth&&e.push('data-minwidth=\"'+r.minWidth+'\"'),e.join(\" \")}()+' class=\"'+function(){var e=[];return r.hide&&e.push(y),r.field||e.push(\"layui-table-col-special\"),e.join(\" \")}()+'\">','<div class=\"layui-table-cell laytable-cell-'+function(){return\"normal\"===r.type?h:h+\" laytable-cell-\"+r.type}()+'\">'+function(){var n=t.extend(!0,{LAY_INDEX:m},l),o=d.config.checkName;switch(r.type){case\"checkbox\":return'<input type=\"checkbox\" name=\"layTableCheckbox\" lay-skin=\"primary\" '+function(){return r[o]?(l[o]=r[o],r[o]?\"checked\":\"\"):n[o]?\"checked\":\"\"}()+\">\";case\"radio\":return n[o]&&(e=a),'<input type=\"radio\" name=\"layTableRadio_'+s.index+'\" '+(n[o]?\"checked\":\"\")+' lay-type=\"layTableRadio\">';case\"numbers\":return m}return r.toolbar?i(t(r.toolbar).html()||\"\").render(n):r.templet?function(){return\"function\"==typeof r.templet?r.templet(n):i(t(r.templet).html()||String(p)).render(n)}():p}(),\"</div></td>\"].join(\"\");o.push(v),r.fixed&&\"right\"!==r.fixed&&u.push(v),\"right\"===r.fixed&&f.push(v)}}),h.push('<tr data-index=\"'+a+'\">'+o.join(\"\")+\"</tr>\"),p.push('<tr data-index=\"'+a+'\">'+u.join(\"\")+\"</tr>\"),v.push('<tr data-index=\"'+a+'\">'+f.join(\"\")+\"</tr>\"))}),c.layBody.scrollTop(0),c.layMain.find(\".\"+f).remove(),c.layMain.find(\"tbody\").html(h.join(\"\")),c.layFixLeft.find(\"tbody\").html(p.join(\"\")),c.layFixRight.find(\"tbody\").html(v.join(\"\")),c.renderForm(),\"number\"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return c.key=s.id||s.index,d.cache[c.key]=u,c.layPage[0==o||0===u.length&&1==n?\"addClass\":\"removeClass\"](y),r?m():0===u.length?(c.renderForm(),c.layFixed.remove(),c.layMain.find(\"tbody\").html(\"\"),c.layMain.find(\".\"+f).remove(),c.layMain.append('<div class=\"'+f+'\">'+s.text.none+\"</div>\")):(m(),c.renderTotal(u),void(s.page&&(s.page=t.extend({elem:\"layui-table-page\"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:[\"prev\",\"page\",\"next\",\"skip\",\"count\",\"limit\"],prev:'<i class=\"layui-icon\">&#xe603;</i>',next:'<i class=\"layui-icon\">&#xe602;</i>',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.loading(),c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},F.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})});var l=[];t.eachCols(function(e,t){var n=t.field||e,o=['<td data-field=\"'+n+'\" data-key=\"'+i.index+\"-\"+t.key+'\" '+function(){var e=[];return t.align&&e.push('align=\"'+t.align+'\"'),t.style&&e.push('style=\"'+t.style+'\"'),t.minWidth&&e.push('data-minwidth=\"'+t.minWidth+'\"'),e.join(\" \")}()+' class=\"'+function(){var e=[];return t.hide&&e.push(y),t.field||e.push(\"layui-table-col-special\"),e.join(\" \")}()+'\">','<div class=\"layui-table-cell laytable-cell-'+function(){var e=i.index+\"-\"+t.key;return\"normal\"===t.type?e:e+\" laytable-cell-\"+t.type}()+'\">'+function(){var e=t.totalRowText||\"\";return t.totalRow?parseFloat(a[n]).toFixed(2)||e:e}(),\"</div></td>\"].join(\"\");l.push(o)}),t.layTotal.find(\"tbody\").html(\"<tr>\"+l.join(\"\")+\"</tr>\")}},F.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(\".laytable-cell-\"+(a.index+\"-\"+t)+\":eq(0)\")},F.prototype.renderForm=function(e){n.render(e,\"LAY-table-\"+this.index)},F.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,\"layui-table-click\"),a=t.layBody.find('tr[data-index=\"'+e+'\"]');a.addClass(i).siblings(\"tr\").removeClass(i)},F.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},h=c.config,y=h.elem.attr(\"lay-filter\"),f=d.cache[c.key];\"string\"==typeof e&&c.layHeader.find(\"th\").each(function(i,a){var l=t(this),o=l.data(\"field\");if(o===e)return e=l,n=o,!1});try{var n=n||e.data(\"field\"),p=e.data(\"key\");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find(\"th .laytable-cell-\"+p).find(S);c.layHeader.find(\"th\").find(S).removeAttr(\"lay-sort\"),v.attr(\"lay-sort\",i||null),c.layFixed.find(\"th\")}catch(m){return o.error(\"Table modules: Did not match to field\")}c.sortKey={field:n,sort:i},h.autoSort&&(\"asc\"===i?r=layui.sort(f,n):\"desc\"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[h.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,u,\"sort(\"+y+\")\",{field:n,type:i})},F.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(g).remove()):(i.layInit=t(['<div class=\"layui-table-init\">','<i class=\"layui-icon layui-icon-loading layui-icon\"></i>',\"</div>\"].join(\"\")),i.layBox.append(i.layInit)))},F.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},F.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name=\"layTableCheckbox\"]'),a=function(i){return e.eachCols(function(e,a){\"checkbox\"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop(\"checked\",!0),e.renderForm(\"checkbox\")),a(!0)):(i[0].checked&&(i.prop(\"checked\",!1),e.renderForm(\"checkbox\")),a(!1)))},F.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find(\"style\")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===\".laytable-cell-\"+e)return t(a),!0})},F.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=H.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css(\"height\",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e=e-(t.layPage.outerHeight()||41)-2),t.layMain.css(\"height\",e))},F.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement(\"div\"),e.style.width=\"100px\",e.style.height=\"100px\",e.style.overflowY=\"scroll\",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},F.prototype.scrollPatch=function(){var e=this,i=e.layMain.children(\"table\"),a=e.layMain.width()-e.layMain.prop(\"clientWidth\"),l=e.layMain.height()-e.layMain.prop(\"clientHeight\"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(\".layui-table-patch\")[0]){var i=t('<th class=\"layui-table-patch\"><div class=\"layui-table-cell\"></div></th>');i.find(\"div\").css({width:a}),e.find(\"tr\").append(i)}}else e.find(\".layui-table-patch\").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(x).css(\"height\",i.height()>=d?d:\"auto\"),e.layFixRight[n>0?\"removeClass\":\"addClass\"](y),e.layFixRight.css(\"right\",a-1)},F.prototype.events=function(){var e,a=this,o=a.config,c=t(\"body\"),s={},h=a.layHeader.find(\"th\"),f=\".layui-table-cell\",p=o.elem.attr(\"lay-filter\");a.layTool.on(\"click\",\"*[lay-event]\",function(e){var i=t(this),c=i.attr(\"lay-event\"),s=function(e){var l=t(e.list),n=t('<ul class=\"layui-table-tool-panel\"></ul>');n.html(l),o.height&&n.css(\"max-height\",o.height-(a.layTool.outerHeight()||50)),i.find(\".layui-table-tool-panel\")[0]||i.append(n),a.renderForm(),n.on(\"click\",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),R.trigger(\"table.tool.panel.remove\"),l.close(a.tipsIndex),c){case\"LAYTABLE_COLS\":s({list:function(){var e=[];return a.eachCols(function(t,i){i.field&&\"normal\"==i.type&&e.push('<li><input type=\"checkbox\" name=\"'+i.field+'\" data-key=\"'+i.key+'\" data-parentkey=\"'+(i.parentKey||\"\")+'\" lay-skin=\"primary\" '+(i.hide?\"\":\"checked\")+' title=\"'+(i.title||i.field)+'\" lay-filter=\"LAY_TABLE_TOOL_COLS\"></li>')}),e.join(\"\")}(),done:function(){n.on(\"checkbox(LAY_TABLE_TOOL_COLS)\",function(e){var i=t(e.elem),l=this.checked,n=i.data(\"key\"),r=i.data(\"parentkey\");layui.each(o.cols,function(e,t){layui.each(t,function(t,i){if(e+\"-\"+t===n){var d=i.hide;i.hide=!l,a.elem.find('*[data-key=\"'+o.index+\"-\"+n+'\"]')[l?\"removeClass\":\"addClass\"](y),d!=i.hide&&a.setParentCol(!l,r),a.resize()}})})})}});break;case\"LAYTABLE_EXPORT\":r.ie?l.tips(\"导出功能不支持 IE，请用 Chrome 等高级浏览器导出\",this,{tips:3}):s({list:function(){return['<li data-type=\"csv\">导出到 Csv 文件</li>','<li data-type=\"xls\">导出到 Excel 文件</li>'].join(\"\")}(),done:function(e,i){i.on(\"click\",function(){var e=t(this).data(\"type\");d.exportFile(o.id,null,e)})}});break;case\"LAYTABLE_PRINT\":var h=window.open(\"打印窗口\",\"_blank\"),f=[\"<style>\",\"body{font-size: 12px; color: #666;}\",\"table{width: 100%; border-collapse: collapse; border-spacing: 0;}\",\"th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}\",\"a{color: #666; text-decoration:none;}\",\"*.layui-hide{display: none}\",\"</style>\"].join(\"\"),v=t(a.layHeader.html());v.append(a.layMain.find(\"table\").html()),v.find(\"th.layui-table-patch\").remove(),v.find(\".layui-table-col-special\").remove(),h.document.write(f+v.prop(\"outerHTML\")),h.document.close(),h.print(),h.close()}layui.event.call(this,u,\"toolbar(\"+p+\")\",t.extend({event:c,config:o},{}))}),h.on(\"mousemove\",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data(\"unresize\")||s.resizeStart||(s.allowResize=i.width()-l<=10,c.css(\"cursor\",s.allowResize?\"col-resize\":\"\"))}).on(\"mouseleave\",function(){t(this);s.resizeStart||c.css(\"cursor\",\"\")}).on(\"mousedown\",function(e){var i=t(this);if(s.allowResize){var l=i.data(\"key\");e.preventDefault(),s.resizeStart=!0,s.offset=[e.clientX,e.clientY],a.getCssRule(l,function(e){var t=e.style.width||i.outerWidth();s.rule=e,s.ruleWidth=parseFloat(t),s.minWidth=i.data(\"minwidth\")||o.cellMinWidth})}}),R.on(\"mousemove\",function(t){if(s.resizeStart){if(t.preventDefault(),s.rule){var i=s.ruleWidth+t.clientX-s.offset[0];i<s.minWidth&&(i=s.minWidth),s.rule.style.width=i+\"px\",l.close(a.tipsIndex)}e=1}}).on(\"mouseup\",function(t){s.resizeStart&&(s={},c.css(\"cursor\",\"\"),a.scrollPatch()),2===e&&(e=null)}),h.on(\"click\",function(i){var l,n=t(this),o=n.find(S),r=o.attr(\"lay-sort\");return o[0]&&1!==e?(l=\"asc\"===r?\"desc\":\"desc\"===r?null:\"asc\",void a.sort(n,l,null,!0)):e=2}).find(S+\" .layui-edge \").on(\"click\",function(e){var i=t(this),l=i.index(),n=i.parents(\"th\").eq(0).data(\"field\");layui.stope(e),0===l?a.sort(n,\"asc\",null,!0):a.sort(n,\"desc\",null,!0)});var v=function(e){var l=t(this),n=l.parents(\"tr\").eq(0).data(\"index\"),o=a.layBody.find('tr[data-index=\"'+n+'\"]'),r=d.cache[a.key][n];return t.extend({tr:o,data:d.clearCacheKey(r),del:function(){d.cache[a.key][n]=[],o.remove(),a.scrollPatch()},update:function(e){e=e||{},layui.each(e,function(e,l){if(e in r){var n,d=o.children('td[data-field=\"'+e+'\"]');r[e]=l,a.eachCols(function(t,i){i.field==e&&i.templet&&(n=i.templet)}),d.children(f).html(function(){return n?function(){return\"function\"==typeof n?n(r):i(t(n).html()||l).render(r)}():l}()),d.data(\"content\",l)}})}},e)};a.elem.on(\"click\",'input[name=\"layTableCheckbox\"]+',function(){var e=t(this).prev(),i=a.layBody.find('input[name=\"layTableCheckbox\"]'),l=e.parents(\"tr\").eq(0).data(\"index\"),n=e[0].checked,o=\"layTableAllChoose\"===e.attr(\"lay-filter\");o?(i.each(function(e,t){t.checked=n,a.setCheckData(e,n)}),a.syncCheckAll(),a.renderForm(\"checkbox\")):(a.setCheckData(l,n),a.syncCheckAll()),layui.event.call(e[0],u,\"checkbox(\"+p+\")\",v.call(e[0],{checked:n,type:o?\"all\":\"one\"}))}),a.elem.on(\"click\",'input[lay-type=\"layTableRadio\"]+',function(){var e=t(this).prev(),i=e[0].checked,l=d.cache[a.key],n=e.parents(\"tr\").eq(0).data(\"index\");layui.each(l,function(e,t){n===e?t.LAY_CHECKED=!0:delete t.LAY_CHECKED}),a.setThisRowChecked(n),layui.event.call(this,u,\"radio(\"+p+\")\",v.call(this,{checked:i}))}),a.layBody.on(\"mouseenter\",\"tr\",function(){var e=t(this),i=e.index();a.layBody.find(\"tr:eq(\"+i+\")\").addClass(W)}).on(\"mouseleave\",\"tr\",function(){var e=t(this),i=e.index();a.layBody.find(\"tr:eq(\"+i+\")\").removeClass(W)}).on(\"click\",\"tr\",function(){m.call(this,\"row\")}).on(\"dblclick\",\"tr\",function(){m.call(this,\"rowDouble\")});var m=function(e){var i=t(this);layui.event.call(this,u,e+\"(\"+p+\")\",v.call(i.children(\"td\")[0]))};a.layBody.on(\"change\",\".\"+N,function(){var e=t(this),i=this.value,l=e.parent().data(\"field\"),n=e.parents(\"tr\").eq(0).data(\"index\"),o=d.cache[a.key][n];o[l]=i,layui.event.call(this,u,\"edit(\"+p+\")\",v.call(this,{value:i,field:l}))}).on(\"blur\",\".\"+N,function(){var e,l=t(this),n=l.parent().data(\"field\"),o=l.parents(\"tr\").eq(0).data(\"index\"),r=d.cache[a.key][o];a.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),l.siblings(f).html(function(a){return e?function(){return\"function\"==typeof e?e(r):i(t(e).html()||this.value).render(r)}():a}(this.value)),l.parent().data(\"content\",this.value),l.remove()}),a.layBody.on(\"click\",\"td\",function(e){var i=t(this),a=(i.data(\"field\"),i.data(\"edit\")),l=i.children(f);if(!i.data(\"off\")&&a){var n=t('<input class=\"layui-input '+N+'\">');return n[0].value=i.data(\"content\")||l.text(),i.find(\".\"+N)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on(\"mouseenter\",\"td\",function(){b.call(this)}).on(\"mouseleave\",\"td\",function(){b.call(this,\"hide\")});var g=\"layui-table-grid-down\",b=function(e){var i=t(this),a=i.children(f);if(e)i.find(\".layui-table-grid-down\").remove();else if(a.prop(\"scrollWidth\")>a.outerWidth()){if(a.find(\".\"+g)[0])return;i.append('<div class=\"'+g+'\"><i class=\"layui-icon layui-icon-down\"></i></div>')}};a.layBody.on(\"click\",\".\"+g,function(e){var i=t(this),n=i.parent(),d=n.children(f);a.tipsIndex=l.tips(['<div class=\"layui-table-tips-main\" style=\"margin-top: -'+(d.height()+16)+\"px;\"+function(){return\"sm\"===o.size?\"padding: 4px 15px; font-size: 12px;\":\"lg\"===o.size?\"padding: 14px 15px;\":\"\"}()+'\">',d.html(),\"</div>\",'<i class=\"layui-icon layui-table-tips-c layui-icon-close\"></i>'].join(\"\"),d[0],{tips:[3,\"\"],time:-1,anim:-1,maxWidth:r.ios||r.android?300:a.elem.width()/2,isOutAnim:!1,skin:\"layui-table-tips\",success:function(e,t){e.find(\".layui-table-tips-c\").on(\"click\",function(){l.close(t)})}}),layui.stope(e)}),a.layBody.on(\"click\",\"*[lay-event]\",function(){var e=t(this),i=e.parents(\"tr\").eq(0).data(\"index\");layui.event.call(this,u,\"tool(\"+p+\")\",v.call(this,{event:e.attr(\"lay-event\")})),a.setThisRowChecked(i)}),a.layMain.on(\"scroll\",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layTotal.scrollLeft(i),a.layFixed.find(x).scrollTop(n),l.close(a.tipsIndex)}),R.on(\"click\",function(){R.trigger(\"table.remove.tool.panel\")}),R.on(\"table.remove.tool.panel\",function(){t(\".layui-table-tool-panel\").remove()}),H.on(\"resize\",function(){a.resize()})},d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter=\"'+e+'\"]':h+\"[lay-data]\"),n=\"Table element property lay-data configuration item has a syntax error: \";return l.each(function(){var a=t(this),l=a.attr(\"lay-data\");try{l=new Function(\"return \"+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr(\"lay-skin\"),size:a.attr(\"lay-size\"),even:\"string\"==typeof a.attr(\"lay-even\")},d.config,i,l);e&&a.hide(),a.find(\"thead>tr\").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr(\"lay-data\");try{l=new Function(\"return \"+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr(\"colspan\")||0,rowspan:a.attr(\"rowspan\")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find(\"tbody>tr\").each(function(e){var i=t(this),a={};i.children(\"td\").each(function(e,i){var l=t(this),n=l.data(\"field\");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children(\"td\").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void(\"function\"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){t=t||d.clearCacheKey(d.cache[e]),i=i||\"csv\";var a=c.config[e]||{},l={csv:\"text/csv\",xls:\"application/vnd.ms-excel\"}[i],n=document.createElement(\"a\");return r.ie?o.error(\"IE_NOT_SUPPORT_EXPORTS\"):(n.href=\"data:\"+l+\";charset=utf-8,\\ufeff\"+encodeURIComponent(function(){var i=[],a=[];return layui.each(t,function(t,l){var n=[];\"object\"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||\"\")}),layui.each(d.clearCacheKey(l),function(e,t){n.push(t)})):d.eachCols(e,function(e,a){a.field&&\"normal\"==a.type&&!a.hide&&(0==t&&i.push(a.title||\"\"),n.push(l[a.field]))}),a.push(n.join(\",\"))}),i.join(\",\")+\"\\r\\n\"+a.join(\"\\r\\n\")}()),n.download=(a.title||\"table_\"+(a.index||\"\"))+\".\"+i,document.body.appendChild(n),n.click(),void document.body.removeChild(n))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,i){i=i||{};var a=s(e);if(a)return i.data&&i.data.constructor===Array&&delete a.data,d.render(t.extend(!0,{},a,i))},d.render=function(e){var t=new F(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(u,d)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/tree.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var o=layui.$,a=layui.hint(),i=\"layui-tree-enter\",r=function(e){this.options=e},t={arrow:[\"&#xe623;\",\"&#xe625;\"],checkbox:[\"&#xe626;\",\"&#xe627;\"],radio:[\"&#xe62b;\",\"&#xe62a;\"],branch:[\"&#xe622;\",\"&#xe624;\"],leaf:\"&#xe621;\"};r.prototype.init=function(e){var o=this;e.addClass(\"layui-box layui-tree\"),o.options.skin&&e.addClass(\"layui-tree-skin-\"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('<ul class=\"'+(n.spread?\"layui-show\":\"\")+'\"></ul>'),s=o([\"<li \"+(n.spread?'data-spread=\"'+n.spread+'\"':\"\")+\">\",function(){return l?'<i class=\"layui-icon layui-tree-spread\">'+(n.spread?t.arrow[1]:t.arrow[0])+\"</i>\":\"\"}(),function(){return r.check?'<i class=\"layui-icon layui-tree-check\">'+(\"checkbox\"===r.check?t.checkbox[0]:\"radio\"===r.check?t.radio[0]:\"\")+\"</i>\":\"\"}(),function(){return'<a href=\"'+(n.href||\"javascript:;\")+'\" '+(r.target&&n.href?'target=\"'+r.target+'\"':\"\")+\">\"+('<i class=\"layui-icon layui-tree-'+(l?\"branch\":\"leaf\")+'\">'+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+\"</i>\")+(\"<cite>\"+(n.name||\"未命名\")+\"</cite></a>\")}(),\"</li>\"].join(\"\"));l&&(s.append(c),i.tree(c,n.children)),e.append(s),\"function\"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children(\"a\").on(\"click\",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(\".layui-tree-spread\")),r=e.children(\"ul\"),n=e.children(\"a\"),l=function(){e.data(\"spread\")?(e.data(\"spread\",null),r.removeClass(\"layui-show\"),i.html(t.arrow[0]),n.find(\".layui-icon\").html(t.branch[0])):(e.data(\"spread\",!0),r.addClass(\"layui-show\"),i.html(t.arrow[1]),n.find(\".layui-icon\").html(t.branch[1]))};r[0]&&(i.on(\"click\",l),n.on(\"dblclick\",l))},r.prototype.on=function(e){var a=this,r=a.options,t=\"layui-tree-drag\";e.find(\"i\").on(\"selectstart\",function(e){return!1}),r.drag&&o(document).on(\"mousemove\",function(e){var i=a.move;if(i.from){var r=(i.to,o('<div class=\"layui-box '+t+'\"></div>'));e.preventDefault(),o(\".\"+t)[0]||o(\"body\").append(r);var n=o(\".\"+t)[0]?o(\".\"+t):r;n.addClass(\"layui-show\").html(i.from.elem.children(\"a\").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on(\"mouseup\",function(){var e=a.move;e.from&&(e.from.elem.children(\"a\").removeClass(i),e.to&&e.to.elem.children(\"a\").removeClass(i),a.move={},o(\".\"+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children(\"a\")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on(\"mousedown\",function(){var o=r.move;o.from={item:a,elem:e}}),t.on(\"mouseenter\",n).on(\"mousemove\",n).on(\"mouseleave\",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e(\"tree\",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error(\"layui.tree 没有找到\"+e.elem+\"元素\")})});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/upload.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var i=layui.$,t=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,r,e,i)}},l=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},r=\"upload\",u=\"layui-upload-file\",c=\"layui-upload-form\",f=\"layui-upload-iframe\",s=\"layui-upload-choose\",p=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};p.prototype.config={accept:\"images\",exts:\"\",auto:!0,bindAction:\"\",url:\"\",field:\"file\",method:\"post\",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},p.prototype.file=function(){var e=this,t=e.config,n=e.elemFile=i(['<input class=\"'+u+'\" type=\"file\" accept=\"'+t.acceptMime+'\" name=\"'+t.field+'\"',t.multiple?\" multiple\":\"\",\">\"].join(\"\")),o=t.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&t.elem.wrap('<div class=\"layui-upload-wrap\"></div>'),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,t=e.config,n=i('<iframe id=\"'+f+'\" class=\"'+f+'\" name=\"'+f+'\" frameborder=\"0\"></iframe>'),a=i(['<form target=\"'+f+'\" class=\"'+c+'\" method=\"post\" key=\"set-mine\" enctype=\"multipart/form-data\" action=\"'+t.url+'\">',\"</form>\"].join(\"\"));i(\"#\"+f)[0]||i(\"body\").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(a),t.elem.next(\".\"+c).append(function(){var e=[];return layui.each(t.data,function(i,t){t=\"function\"==typeof t?t():t,e.push('<input type=\"hidden\" name=\"'+i+'\" value=\"'+t+'\">')}),e.join(\"\")}()))},p.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return\"input\"===e.tagName.toLocaleLowerCase()&&\"file\"===e.type},p.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},p.prototype.upload=function(e,t){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var t=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&t+n===o.fileLength&&\"function\"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:t,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,i){i=\"function\"==typeof i?i():i,r.append(e,i)}),i.ajax({url:l.url,type:\"post\",data:r,contentType:!1,processData:!1,dataType:\"json\",headers:l.headers||{},success:function(i){t++,d(e,i),u()},error:function(){n++,o.msg(\"请求上传接口出现异常\"),m(e),u()}})})},c=function(){var e=i(\"#\"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var i,t=e.contents().find(\"body\");try{i=t.text()}catch(n){o.msg(\"获取上传后的响应信息出现异常\"),clearInterval(p.timer),m()}i&&(clearInterval(p.timer),t.html(\"\"),d(0,i))},30)},d=function(e,i){if(o.elemFile.next(\".\"+s).remove(),r.value=\"\",\"object\"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},o.msg(\"请对上传接口返回有效JSON\")}\"function\"==typeof l.done&&l.done(i,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=\"\"),\"function\"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var i=[];return layui.each(e||o.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){o.preview(e)},upload:function(e,i){var t={};t[e]=i,o.upload(t)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,i){o.files[e]=i}),o.files},resetFile:function(e,i,t){var n=new File([i],t);o.files=o.files||{},o.files[e]=n}},y=function(){if(\"choose\"!==t&&!l.auto||(l.choose&&l.choose(g),\"choose\"!==t))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\\/\\\\]+\\..+/g)||[]||\"\":v,0!==v.length){switch(l.accept){case\"file\":if(h&&!RegExp(\"\\\\w\\\\.(\"+h+\")$\",\"i\").test(escape(v)))return o.msg(\"选择的文件中包含不支持的格式\"),r.value=\"\";break;case\"video\":if(!RegExp(\"\\\\w\\\\.(\"+(h||\"avi|mp4|wma|rmvb|rm|flash|3gp|flv\")+\")$\",\"i\").test(escape(v)))return o.msg(\"选择的视频中包含不支持的格式\"),r.value=\"\";break;case\"audio\":if(!RegExp(\"\\\\w\\\\.(\"+(h||\"mp3|wav|mid\")+\")$\",\"i\").test(escape(v)))return o.msg(\"选择的音频中包含不支持的格式\"),r.value=\"\";break;default:if(layui.each(v,function(e,i){RegExp(\"\\\\w\\\\.(\"+(h||\"jpg|png|gif|bmp|jpeg$\")+\")\",\"i\").test(escape(i))||(n=!0)}),n)return o.msg(\"选择的图片中包含不支持的格式\"),r.value=\"\"}if(o.fileLength=function(){var i=0,t=e||o.files||o.chooseFiles||r.files;return layui.each(t,function(){i++}),i}(),l.number&&o.fileLength>l.number)return o.msg(\"同时最多只能上传的数量为：\"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;t=t>=1?t.toFixed(2)+\"MB\":l.size+\"KB\",r.value=\"\",F=t}}),F)return o.msg(\"文件不能超过\"+F)}y()}},p.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+\"-\"+i]=t})},l=function(i,n){var a=e.elemFile,o=i.length>1?i.length+\"个文件\":(i[0]||{}).name||a[0].value.match(/[^\\/\\\\]+\\..+/g)||[]||\"\";a.next().hasClass(s)&&a.next().remove(),e.upload(null,\"choose\"),e.isFile()||t.choose||a.after('<span class=\"layui-inline '+s+'\">'+o+\"</span>\")};t.elem.off(\"upload.start\").on(\"upload.start\",function(){var a=i(this),o=a.attr(\"lay-data\");if(o)try{o=new Function(\"return \"+o)(),e.config=i.extend({},t,o)}catch(l){n.error(\"Upload element property lay-data configuration item has a syntax error: \"+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||t.elem.off(\"upload.over\").on(\"upload.over\",function(){var e=i(this);e.attr(\"lay-over\",\"\")}).off(\"upload.leave\").on(\"upload.leave\",function(){var e=i(this);e.removeAttr(\"lay-over\")}).off(\"upload.drop\").on(\"upload.drop\",function(n,a){var r=i(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr(\"lay-over\"),o(u),t.auto?e.upload(u):l(u)}),e.elemFile.off(\"upload.change\").on(\"upload.change\",function(){var i=this.files||[];o(i),t.auto?e.upload():l(i)}),t.bindAction.off(\"upload.action\").on(\"upload.action\",function(){e.upload()}),t.elem.data(\"haveEvents\")||(e.elemFile.on(\"change\",function(){i(this).trigger(\"upload.change\")}),t.elem.on(\"click\",function(){e.isFile()||i(this).trigger(\"upload.start\")}),t.drag&&t.elem.on(\"dragover\",function(e){e.preventDefault(),i(this).trigger(\"upload.over\")}).on(\"dragleave\",function(e){i(this).trigger(\"upload.leave\")}).on(\"drop\",function(e){e.preventDefault(),i(this).trigger(\"upload.drop\",e)}),t.bindAction.on(\"click\",function(){i(this).trigger(\"upload.action\")}),t.elem.data(\"haveEvents\",!0))},o.render=function(e){var i=new p(e);return l.call(i)},e(r,o)});"
  },
  {
    "path": "sdk/易语言/ui/layui/lay/modules/util.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(t){\"use strict\";var e=layui.$,i={fixbar:function(t){var i,a,n=\"layui-fixbar\",r=\"layui-fixbar-top\",o=e(document),l=e(\"body\");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?\"&#xe606;\":t.bar1,t.bar2=t.bar2===!0?\"&#xe607;\":t.bar2,t.bgcolor=t.bgcolor?\"background-color:\"+t.bgcolor:\"\";var c=[t.bar1,t.bar2,\"&#xe604;\"],g=e(['<ul class=\"'+n+'\">',t.bar1?'<li class=\"layui-icon\" lay-type=\"bar1\" style=\"'+t.bgcolor+'\">'+c[0]+\"</li>\":\"\",t.bar2?'<li class=\"layui-icon\" lay-type=\"bar2\" style=\"'+t.bgcolor+'\">'+c[1]+\"</li>\":\"\",'<li class=\"layui-icon '+r+'\" lay-type=\"top\" style=\"'+t.bgcolor+'\">'+c[2]+\"</li>\",\"</ul>\"].join(\"\")),s=g.find(\".\"+r),u=function(){var e=o.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e(\".\"+n)[0]||(\"object\"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find(\"li\").on(\"click\",function(){var i=e(this),a=i.attr(\"lay-type\");\"top\"===a&&e(\"html,body\").animate({scrollTop:0},200),t.click&&t.click.call(this,a)}),o.on(\"scroll\",function(){clearTimeout(a),a=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var a=this,n=\"function\"==typeof e,r=new Date(t).getTime(),o=new Date(!e||n?(new Date).getTime():e).getTime(),l=r-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=e);var g=setTimeout(function(){a.countdown(t,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(t).getTime();return n>6912e5?(n=new Date(t),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),e||(a[1][0]=i.digit(n.getHours()),a[1][1]=i.digit(n.getMinutes()),a[1][2]=i.digit(n.getSeconds())),a[0].join(\"-\")+\" \"+a[1].join(\":\")):n>=864e5?(n/1e3/60/60/24|0)+\"天前\":n>=36e5?(n/1e3/60/60|0)+\"小时前\":n>=12e4?(n/1e3/60|0)+\"分钟前\":n<0?\"未来\":\"刚刚\"},digit:function(t,e){var i=\"\";t=String(t),e=e||2;for(var a=t.length;a<e;a++)i+=\"0\";return t<Math.pow(10,e)?i+(0|t):t},toDateString:function(t,e){var i=this,a=new Date(t||new Date),n=[i.digit(a.getFullYear(),4),i.digit(a.getMonth()+1),i.digit(a.getDate())],r=[i.digit(a.getHours()),i.digit(a.getMinutes()),i.digit(a.getSeconds())];return e=e||\"yyyy-MM-dd HH:mm:ss\",e.replace(/yyyy/g,n[0]).replace(/MM/g,n[1]).replace(/dd/g,n[2]).replace(/HH/g,r[0]).replace(/mm/g,r[1]).replace(/ss/g,r[2])},escape:function(t){return String(t||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")}};!function(t,e,i){\"$:nomunge\";function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width(),a=e.height(),n=t.data(this,g);(i!==n.w||a!==n.h)&&e.trigger(c,[n.w=i,n.h=a])}),a()},o[s])}var n,r=t([]),o=t.resize=t.extend(t.resize,{}),l=\"setTimeout\",c=\"resize\",g=c+\"-special-event\",s=\"delay\",u=\"throttleWindow\";o[s]=250,o[u]=!0,t.event.special[c]={setup:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===r.length&&a()},teardown:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.not(e),e.removeData(g),r.length||clearTimeout(n)},add:function(e){function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width(),l.h=r!==i?r:o.height(),n.apply(this,arguments)}if(!o[u]&&this[l])return!1;var n;return t.isFunction(e)?(n=e,a):(n=e.handler,void(e.handler=a))}}}(e,window),t(\"util\",i)});"
  },
  {
    "path": "sdk/易语言/ui/layui/layui.all.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v=\"2.4.5\"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if(\"interactive\"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),i=function(t){e.console&&console.error&&console.error(\"Layui hint: \"+t)},a=\"undefined\"!=typeof opera&&\"[object Opera]\"===opera.toString(),u={layer:\"modules/layer\",laydate:\"modules/laydate\",laypage:\"modules/laypage\",laytpl:\"modules/laytpl\",layim:\"modules/layim\",layedit:\"modules/layedit\",form:\"modules/form\",upload:\"modules/upload\",tree:\"modules/tree\",table:\"modules/table\",element:\"modules/element\",rate:\"modules/rate\",colorpicker:\"modules/colorpicker\",slider:\"modules/slider\",carousel:\"modules/carousel\",flow:\"modules/flow\",util:\"modules/util\",code:\"modules/code\",jquery:\"modules/jquery\",mobile:\"modules/mobile\",\"layui.all\":\"../layui.all\"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r=\"function\"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return\"function\"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),layui[\"layui.all\"]||!layui[\"layui.all\"]&&layui[\"layui.mobile\"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n=\"PLaySTATION 3\"===navigator.platform?/^complete$/:/^(complete|loaded)$/;(\"load\"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+\" is not a valid module\"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):\"function\"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName(\"head\")[0];e=\"string\"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){\"jquery\"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\\/\\/([\\s\\S]+?)\\//)||[\"//\"+location.host+\"/\"])[0],0===e.length||layui[\"layui.all\"]&&u[f]||!layui[\"layui.all\"]&&layui[\"layui.mobile\"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+\" is not a valid module\"):void(\"string\"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement(\"script\"),h=(u[f]?p+\"lay/\":/^\\{\\/\\}/.test(y.modules[f])?\"\":o.base||\"\")+(y.modules[f]||f)+\".js\";h=h.replace(/^\\{\\/\\}/,\"\"),v.async=!0,v.charset=\"utf-8\",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||\"\";return e?\"?v=\"+e:\"\"}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf(\"[native code\")<0||a?v.addEventListener(\"load\",function(e){s(e,h)},!1):v.attachEvent(\"onreadystatechange\",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement(\"link\"),l=t.getElementsByTagName(\"head\")[0];\"string\"==typeof n&&(r=n);var s=(r||e).replace(/\\.|\\//g,\"\"),c=u.id=\"layuicss-\"+s,y=0;return u.rel=\"stylesheet\",u.href=e+(o.debug?\"?v=\"+(new Date).getTime():\"\"),u.media=\"all\",t.getElementById(c)||l.appendChild(u),\"function\"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+\" timeout\"):void(1989===parseInt(a.getStyle(t.getElementById(c),\"width\"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return\"function\"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+\"css/\"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,\"function\"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,\"function\"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i(\"模块名 \"+o+\" 已被占用\"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||\"\"};return/^#\\//.test(e)?(e=e.replace(/^#\\//,\"\"),o.href=\"/\"+e,e=e.replace(/([^#])(#.*$)/,\"$1\").split(\"/\")||[],t.each(e,function(e,t){/^\\w+=/.test(t)?function(){t=t.split(\"=\"),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||\"layui\",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o=\"object\"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return\"value\"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+\"/([^\\\\s\\\\_\\\\-]+)\");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?\"windows\":/linux/.test(o)?\"linux\":/iphone|ipod|ipad|ios/.test(o)?\"ios\":/mac/.test(o)?\"mac\":void 0}(),ie:function(){return!!(e.ActiveXObject||\"ActiveXObject\"in e)&&((o.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),weixin:n(\"micromessenger\")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios=\"ios\"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if(\"function\"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;o<e.length&&!t.call(e[o],o,e[o]);o++);return n},n.prototype.sort=function(e,t,o){var n=JSON.parse(JSON.stringify(e||[]));return t?(n.sort(function(e,o){var n=/^-?\\d+$/,r=e[t],i=o[t];return n.test(r)&&(r=parseFloat(r)),n.test(i)&&(i=parseFloat(i)),r&&!i?1:!r&&i?-1:r>i?1:r<i?-1:0}),o&&n.reverse(),n):n},n.prototype.stope=function(t){t=t||e.event;try{t.stopPropagation()}catch(o){t.cancelBubble=!0}},n.prototype.onevent=function(e,t,o){return\"string\"!=typeof e||\"function\"!=typeof o?this:n.event(e,t,null,o)},n.prototype.event=n.event=function(e,t,n,r){var i=this,a=null,u=t.match(/\\((.*)\\)$/)||[],l=(e+\".\"+t).replace(u[0],\"\"),s=u[1]||\"\",c=function(e,t){var o=t&&t.call(i,n);o===!1&&null===a&&(a=!1)};return r?(o.event[l]=o.event[l]||{},o.event[l][s]=[r],this):(layui.each(o.event[l],function(e,t){return\"{*}\"===s?void layui.each(t,c):(\"\"===e&&layui.each(t,c),void(s&&e===s&&layui.each(t,c)))}),a)},e.layui=new n}(window);layui.define(function(a){var i=layui.cache;layui.config({dir:i.dir.replace(/lay\\/dest\\/$/,\"\")}),a(\"layui.all\",layui.v)});layui.define(function(e){\"use strict\";var r={open:\"{{\",close:\"}}\"},c={exp:function(e){return new RegExp(e,\"g\")},query:function(e,c,t){var o=[\"#([\\\\s\\\\S])+?\",\"([^{#}])*?\"][e||0];return n((c||\"\")+r.open+o+r.close+(t||\"\"))},escape:function(e){return String(e||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")},error:function(e,r){var c=\"Laytpl Error：\";return\"object\"==typeof console&&console.error(c+e+\"\\n\"+(r||\"\")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n(\"^\"+r.open+\"#\",\"\"),l=n(r.close+\"$\",\"\");e=e.replace(/\\s+|\\r|\\t|\\n/g,\" \").replace(n(r.open+\"#\"),r.open+\"# \").replace(n(r.close+\"}\"),\"} \"+r.close).replace(/\\\\/g,\"\\\\\\\\\").replace(n(r.open+\"!(.+?)!\"+r.close),function(e){return e=e.replace(n(\"^\"+r.open+\"!\"),\"\").replace(n(\"!\"+r.close),\"\").replace(n(r.open+\"|\"+r.close),function(e){return e.replace(/(.)/g,\"\\\\$1\")})}).replace(/(?=\"|')/g,\"\\\\\").replace(c.query(),function(e){return e=e.replace(a,\"\").replace(l,\"\"),'\";'+e.replace(/\\\\/g,\"\")+';view+=\"'}).replace(c.query(1),function(e){var c='\"+(';return e.replace(/\\s/g,\"\")===r.open+r.close?\"\":(e=e.replace(n(r.open+\"|\"+r.close),\"\"),/^=/.test(e)&&(e=e.replace(/^=/,\"\"),c='\"+_escape_('),c+e.replace(/\\\\/g,\"\")+')+\"')}),e='\"use strict\";var view = \"'+e+'\";return view;';try{return o.cache=e=new Function(\"d, _escape_\",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error(\"no data\")};var o=function(e){return\"string\"!=typeof e?c.error(\"Template not found\"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v=\"1.2.0\",e(\"laytpl\",o)});layui.define(function(e){\"use strict\";var a=document,t=\"getElementById\",n=\"getElementsByTagName\",i=\"laypage\",r=\"layui-disabled\",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if(\"object\"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups=\"groups\"in a?0|a.groups:5;a.layout=\"object\"==typeof a.layout?a.layout:[\"prev\",\"page\",\"next\"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits=\"object\"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev=\"prev\"in a?a.prev:\"&#x4E0A;&#x4E00;&#x9875;\",a.next=\"next\"in a?a.next:\"&#x4E0B;&#x4E00;&#x9875;\";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href=\"javascript:;\" class=\"layui-laypage-prev'+(1==a.curr?\" \"+r:\"\")+'\" data-page=\"'+(a.curr-1)+'\">'+a.prev+\"</a>\":\"\"}(),page:function(){var e=[];if(a.count<1)return\"\";n>1&&a.first!==!1&&0!==t&&e.push('<a href=\"javascript:;\" class=\"layui-laypage-first\" data-page=\"1\"  title=\"&#x9996;&#x9875;\">'+(a.first||1)+\"</a>\");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class=\"layui-laypage-spr\">&#x2026;</span>');r<=u;r++)r===a.curr?e.push('<span class=\"layui-laypage-curr\"><em class=\"layui-laypage-em\" '+(/^#/.test(a.theme)?'style=\"background-color:'+a.theme+';\"':\"\")+\"></em><em>\"+r+\"</em></span>\"):e.push('<a href=\"javascript:;\" data-page=\"'+r+'\">'+r+\"</a>\");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class=\"layui-laypage-spr\">&#x2026;</span>'),0!==t&&e.push('<a href=\"javascript:;\" class=\"layui-laypage-last\" title=\"&#x5C3E;&#x9875;\"  data-page=\"'+a.pages+'\">'+(a.last||a.pages)+\"</a>\")),e.join(\"\")}(),next:function(){return a.next?'<a href=\"javascript:;\" class=\"layui-laypage-next'+(a.curr==a.pages?\" \"+r:\"\")+'\" data-page=\"'+(a.curr+1)+'\">'+a.next+\"</a>\":\"\"}(),count:'<span class=\"layui-laypage-count\">共 '+a.count+\" 条</span>\",limit:function(){var e=['<span class=\"layui-laypage-limits\"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value=\"'+n+'\"'+(n===a.limit?\"selected\":\"\")+\">\"+n+\" 条/页</option>\")}),e.join(\"\")+\"</select></span>\"}(),refresh:['<a href=\"javascript:;\" data-page=\"'+a.curr+'\" class=\"layui-laypage-refresh\">','<i class=\"layui-icon layui-icon-refresh\"></i>',\"</a>\"].join(\"\"),skip:function(){return['<span class=\"layui-laypage-skip\">&#x5230;&#x7B2C;','<input type=\"text\" min=\"1\" value=\"'+a.curr+'\" class=\"layui-input\">','&#x9875;<button type=\"button\" class=\"layui-laypage-btn\">&#x786e;&#x5b9a;</button>',\"</span>\"].join(\"\")}()};return['<div class=\"layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?\"molv\":a.theme:\"default\")+'\" id=\"layui-laypage-'+a.index+'\">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join(\"\")}(),\"</div>\"].join(\"\")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n](\"button\")[0],l=e[n](\"input\")[0],p=e[n](\"select\")[0],c=function(){var e=0|l.value.replace(/\\s|\\D/g,\"\");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)\"a\"===r[o].nodeName.toLowerCase()&&s.on(r[o],\"click\",function(){var e=0|this.getAttribute(\"data-page\");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,\"change\",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,\"click\",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n](\"input\")[0];t&&s.on(t,\"keyup\",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\\D/.test(n)&&(this.value=n.replace(/\\D/,\"\")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t](\"layui-laypage-\"+i.index);n.jump(s),i.hash&&!e&&(location.hash=\"!\"+i.hash+\"=\"+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent(\"on\"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(){\"use strict\";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if(\"interactive\"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName(\"head\")[0],o=document.createElement(\"link\");\"string\"==typeof a&&(i=a);var s=(i||e).replace(/\\.|\\//g,\"\"),l=\"layuicss-\"+s,d=0;o.rel=\"stylesheet\",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),\"function\"==typeof a&&!function c(){return++d>80?window.console&&console.error(\"laydate.css: Invalid\"):void(1989===parseInt(t.getStyle(document.getElementById(l),\"width\"))?a():setTimeout(c,100))}()}}},n={v:\"5.0.9\",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i=\"laydate\",r=\"\",o=(e?\"modules/laydate/\":\"theme/\")+\"default/laydate.css?v=\"+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i=\"laydate\",r=\".layui-laydate\",o=\"layui-this\",s=\"laydate-disabled\",l=\"开始日期超出了结束日期<br>建议重新选择\",d=[100,2e5],c=\"layui-laydate-static\",m=\"layui-laydate-list\",u=\"laydate-selected\",h=\"layui-laydate-hint\",y=\"laydate-day-prev\",f=\"laydate-day-next\",p=\"layui-laydate-footer\",g=\".laydate-btns-confirm\",v=\"laydate-time-text\",D=\".laydate-btns-time\",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n=\"object\"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t<n.length;t++)this.push(n[t])};C.prototype=[],C.prototype.constructor=C,w.extend=function(){var e=1,t=arguments,n=function(e,t){e=e||(t.constructor===Array?[]:{});for(var a in t)e[a]=t[a]&&t[a].constructor===Object?n(e[a],t[a]):t[a];return e};for(t[0]=\"object\"==typeof t[0]?t[0]:{};e<t.length;e++)\"object\"==typeof t[e]&&n(t[0],t[e]);return t[0]},w.ie=function(){var e=navigator.userAgent.toLowerCase();return!!(window.ActiveXObject||\"ActiveXObject\"in window)&&((e.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),w.stope=function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},w.each=function(e,t){var n,a=this;if(\"function\"!=typeof t)return a;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return a},w.digit=function(e,t,n){var a=\"\";e=String(e),t=t||2;for(var i=e.length;i<t;i++)a+=\"0\";return e<Math.pow(10,t)?a+(0|e):e},w.elem=function(e,t){var n=document.createElement(e);return w.each(t||{},function(e,t){n.setAttribute(e,t)}),n},C.addStr=function(e,t){return e=e.replace(/\\s+/,\" \"),t=t.replace(/\\s+/,\" \").split(\" \"),w.each(t,function(t,n){new RegExp(\"\\\\b\"+n+\"\\\\b\").test(e)||(e=e+\" \"+n)}),e.replace(/^\\s|\\s$/,\"\")},C.removeStr=function(e,t){return e=e.replace(/\\s+/,\" \"),t=t.replace(/\\s+/,\" \").split(\" \"),w.each(t,function(t,n){var a=new RegExp(\"\\\\b\"+n+\"\\\\b\");a.test(e)&&(e=e.replace(a,\"\"))}),e.replace(/\\s+/,\" \").replace(/^\\s|\\s$/,\"\")},C.prototype.find=function(e){var t=this,n=0,a=[],i=\"object\"==typeof e;return this.each(function(r,o){for(var s=i?[e]:o.querySelectorAll(e||null);n<s.length;n++)a.push(s[n]);t.shift()}),i||(t.selector=(t.selector?t.selector+\" \":\"\")+e),w.each(a,function(e,n){t.push(n)}),t},C.prototype.each=function(e){return w.each.call(this,this,e)},C.prototype.addClass=function(e,t){return this.each(function(n,a){a.className=C[t?\"removeStr\":\"addStr\"](a.className,e)})},C.prototype.removeClass=function(e){return this.addClass(e,!0)},C.prototype.hasClass=function(e){var t=!1;return this.each(function(n,a){new RegExp(\"\\\\b\"+e+\"\\\\b\").test(a.className)&&(t=!0)}),t},C.prototype.attr=function(e,t){var n=this;return void 0===t?function(){if(n.length>0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){\"object\"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent(\"on\"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent(\"on\"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:\"date\",range:!1,format:\"yyyy-MM-dd\",value:null,isInitValue:!0,min:\"1900-1-1\",max:\"2099-12-31\",trigger:\"focus\",show:!1,showBottom:!0,btns:[\"clear\",\"now\",\"confirm\"],lang:\"cn\",theme:\"default\",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],time:[\"时\",\"分\",\"秒\"],timeTips:\"选择时间\",startTime:\"开始时间\",endTime:\"结束时间\",dateTips:\"返回日期\",month:[\"一\",\"二\",\"三\",\"四\",\"五\",\"六\",\"七\",\"八\",\"九\",\"十\",\"十一\",\"十二\"],tools:{confirm:\"确定\",clear:\"清空\",now:\"现在\"}},en:{weeks:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],time:[\"Hours\",\"Minutes\",\"Seconds\"],timeTips:\"Select Time\",startTime:\"Start Time\",endTime:\"End Time\",dateTips:\"Select Date\",month:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],tools:{confirm:\"Confirm\",clear:\"Clear\",now:\"Now\"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n=\"yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s\",a=\"static\"===t.position,i={year:\"yyyy\",month:\"yyyy-MM\",date:\"yyyy-MM-dd\",time:\"HH:mm:ss\",datetime:\"yyyy-MM-dd HH:mm:ss\"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range=\"-\"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+\"|.\",\"g\"))||[],e.EXP_IF=\"\",e.EXP_SPLIT=\"\",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?\"\\\\d{\"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||\"\")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?\"1,4\":/^y$/.test(a)?\"1,308\":\"1,2\"}()+\"}\":\"\\\\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+\"(\"+i+\")\"}),e.EXP_IF=new RegExp(\"^\"+(t.range?e.EXP_IF+\"\\\\s\\\\\"+t.range+\"\\\\s\"+e.EXP_IF:e.EXP_IF)+\"$\"),e.EXP_SPLIT=new RegExp(\"^\"+e.EXP_SPLIT+\"$\",\"\"),e.isInput(t.elem[0])||\"focus\"===t.trigger&&(t.trigger=\"click\"),t.elem.attr(\"lay-key\")||(t.elem.attr(\"lay-key\",e.index),t.eventElem.attr(\"lay-key\",e.index)),t.mark=w.extend({},t.calendar&&\"cn\"===t.lang?{\"0-1-1\":\"元旦\",\"0-2-14\":\"情人\",\"0-3-8\":\"妇女\",\"0-3-12\":\"植树\",\"0-4-1\":\"愚人\",\"0-5-1\":\"劳动\",\"0-5-4\":\"青年\",\"0-6-1\":\"儿童\",\"0-9-10\":\"教师\",\"0-9-18\":\"国耻\",\"0-10-1\":\"国庆\",\"0-12-25\":\"圣诞\"}:{},t.mark),w.each([\"min\",\"max\"],function(e,n){var a=[],i=[];if(\"number\"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r<s?o+r*s:r:o);a=[l.getFullYear(),l.getMonth()+1,l.getDate()],r<s||(i=[l.getHours(),l.getMinutes(),l.getSeconds()])}else a=(t[n].match(/\\d+-\\d+-\\d+/)||[\"\"])[0].split(\"-\"),i=(t[n].match(/\\d+:\\d+:\\d+/)||[\"\"])[0].split(\":\");t[n]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|i[0],minutes:0|i[1],seconds:0|i[2]}}),e.elemID=\"layui-laydate\"+t.elem.attr(\"lay-key\"),(t.show||a)&&e.render(),a||e.events(),t.value&&t.isInitValue&&(t.value.constructor===Date?e.setValue(e.parse(0,e.systemDate(t.value))):e.setValue(t.value)))},T.prototype.render=function(){var e=this,t=e.config,n=e.lang(),a=\"static\"===t.position,i=e.elem=w.elem(\"div\",{id:e.elemID,\"class\":[\"layui-laydate\",t.range?\" layui-laydate-range\":\"\",a?\" \"+c:\"\",t.theme&&\"default\"!==t.theme&&!/^#/.test(t.theme)?\" laydate-theme-\"+t.theme:\"\"].join(\"\")}),r=e.elemMain=[],o=e.elemHeader=[],s=e.elemCont=[],l=e.table=[],d=e.footer=w.elem(\"div\",{\"class\":p});if(t.zIndex&&(i.style.zIndex=t.zIndex),w.each(new Array(2),function(e){if(!t.range&&e>0)return!0;var a=w.elem(\"div\",{\"class\":\"layui-laydate-header\"}),i=[function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-prev-y\"});return e.innerHTML=\"&#xe65a;\",e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-prev-m\"});return e.innerHTML=\"&#xe603;\",e}(),function(){var e=w.elem(\"div\",{\"class\":\"laydate-set-ym\"}),t=w.elem(\"span\"),n=w.elem(\"span\");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-next-m\"});return e.innerHTML=\"&#xe602;\",e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-next-y\"});return e.innerHTML=\"&#xe65b;\",e}()],d=w.elem(\"div\",{\"class\":\"layui-laydate-content\"}),c=w.elem(\"table\"),m=w.elem(\"thead\"),u=w.elem(\"tr\");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem(\"th\");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem(\"div\",{\"class\":\"layui-laydate-main laydate-main-list-\"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return\"datetime\"===t.type&&e.push('<span lay-type=\"datetime\" class=\"laydate-btns-time\">'+n.timeTips+\"</span>\"),w.each(t.btns,function(e,r){var o=n.tools[r]||\"btn\";t.range&&\"now\"===r||(a&&\"clear\"===r&&(o=\"cn\"===t.lang?\"重置\":\"Reset\"),i.push('<span lay-type=\"'+r+'\" class=\"laydate-btns-'+r+'\">'+o+\"</span>\"))}),e.push('<div class=\"laydate-footer-btns\">'+i.join(\"\")+\"</div>\"),e.join(\"\")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem(\"style\"),u=[\"#{{id}} .layui-laydate-header{background-color:{{theme}};}\",\"#{{id}} .layui-this{background-color:{{theme}} !important;}\"].join(\"\").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);\"styleSheet\"in m?(m.setAttribute(\"type\",\"text/css\"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass(\"laydate-theme-molv\"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,\"function\"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w(\"#\"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?\"scrollLeft\":\"scrollTop\",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?\"clientWidth\":\"clientHeight\"]},l=5,d=a.left,c=a.bottom;d+i+l>s(\"width\")&&(d=s(\"width\")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+(\"fixed\"===t.position?0:o(1))+\"px\",e.elem.style.top=c+(\"fixed\"===t.position?0:o())+\"px\"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem(\"div\",{\"class\":h}));t.elem&&(n.innerHTML=e||\"\",w(t.elem).find(\".\"+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find(\".\"+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?\"val\":\"html\",i.isInput(s)?s.value:\"static\"===r.position?\"\":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=[\"startTime\",\"endTime\"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length<l.length&&(a=!0),/yyyy|y/.test(l)?(c<d[0]&&(c=d[0],a=!0),e.year=c):/MM|M/.test(l)?(c<1&&(c=1,a=!0),e.month=c-1):/dd|d/.test(l)?(c<1&&(c=1,a=!0),e.date=c):/HH|H/.test(l)?(c<1&&(c=0,a=!0),e.hours=c,r.range&&(i[o[n]].hours=c)):/mm|m/.test(l)?(c<1&&(c=0,a=!0),e.minutes=c,r.range&&(i[o[n]].minutes=c)):/ss|s/.test(l)&&(c<1&&(c=0,a=!0),e.seconds=c,r.range&&(i[o[n]].seconds=c))}),c(e)};return\"limit\"===e?(c(o),i):(l=l||r.value,\"string\"==typeof l&&(l=l.replace(/\\s+/g,\" \").replace(/^\\s|\\s$/g,\"\")),i.startState&&!i.endState&&(delete i.startState,i.endState=!0),\"string\"==typeof l&&l?i.EXP_IF.test(l)?r.range?(l=l.split(\" \"+r.range+\" \"),i.startDate=i.startDate||i.systemDate(),i.endDate=i.endDate||i.systemDate(),r.dateTime=w.extend({},i.startDate),w.each([i.startDate,i.endDate],function(e,t){m(t,l[e],e)})):m(o,l):(i.hint(\"日期格式不合法<br>必须遵循下述格式：<br>\"+(r.range?r.format+\" \"+r.range+\" \"+r.format:r.format)+\"<br>已为你重置\"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():\"\":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split(\"-\");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html('<span class=\"laydate-day-mark\">'+n+\"</span>\"),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?\"endDate\":\"dateTime\"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.now<l.min||l.now>l.max,e&&e[i?\"addClass\":\"removeClass\"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u=\"date\"!==s.type&&\"datetime\"!==s.type,h=e?1:0,y=w(r.table[h]).find(\"td\"),f=w(r.elemHeader[h][2]).find(\"span\");if(l.year<d[0]&&(l.year=d[0],r.hint(\"最低只能支持到公元\"+d[0]+\"年\")),l.year>d[1]&&(l.year=d[1],r.hint(\"最高只能支持到公元\"+d[1]+\"年\")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr(\"class\"),e<t?(c=a-t+e,n.addClass(\"laydate-day-prev\"),d=r.getAsYM(l.year,l.month,\"sub\")):e>=t&&e<i+t?(c=e-t,s.range||c+1===l.date&&n.addClass(o)):(c=e-i-t,n.addClass(\"laydate-day-next\"),d=r.getAsYM(l.year,l.month)),d[1]++,d[2]=c+1,n.attr(\"lay-ymd\",d.join(\"-\")).html(d[2]),r.mark(n,d).limit(n,{year:d[0],month:d[1]-1,date:d[2]},e)}),w(f[0]).attr(\"lay-ym\",l.year+\"-\"+(l.month+1)),w(f[1]).attr(\"lay-ym\",l.year+\"-\"+(l.month+1)),\"cn\"===s.lang?(w(f[0]).attr(\"lay-type\",\"year\").html(l.year+\"年\"),w(f[1]).attr(\"lay-type\",\"month\").html(l.month+1+\"月\")):(w(f[0]).attr(\"lay-type\",\"month\").html(m.month[l.month]),w(f[1]).attr(\"lay-type\",\"year\").html(l.year)),u&&(s.range&&(e?r.endDate=r.endDate||{year:l.year+(\"year\"===s.type?1:0),month:l.month+(\"month\"===s.type?0:-1)}:r.startDate=r.startDate||{year:l.year,month:l.month},e&&(r.listYM=[[r.startDate.year,r.startDate.month+1],[r.endDate.year,r.endDate.month+1]],r.list(s.type,0).list(s.type,1),\"time\"===s.type?r.setBtnStatus(\"时间\",w.extend({},r.systemDate(),r.startTime),w.extend({},r.systemDate(),r.endTime)):r.setBtnStatus(!0))),s.range||(r.listYM=[[l.year,l.month+1]],r.list(s.type,0))),s.range&&!e){var p=r.getAsYM(l.year,l.month);r.calendar(w.extend({},l,{year:p[0],month:p[1]}))}return s.range||r.limit(w(r.footer).find(g),null,0,[\"hours\",\"minutes\",\"seconds\"]),s.range&&e&&!u&&r.stampRange(),r},T.prototype.list=function(e,t){var n=this,a=n.config,i=a.dateTime,r=n.lang(),l=a.range&&\"date\"!==a.type&&\"datetime\"!==a.type,d=w.elem(\"ul\",{\"class\":m+\" \"+{year:\"laydate-year-list\",month:\"laydate-month-list\",time:\"laydate-time-list\"}[e]}),c=n.elemHeader[t],u=w(c[2]).find(\"span\"),h=n.elemCont[t||0],y=w(h).find(\".\"+m)[0],f=\"cn\"===a.lang,p=f?\"年\":\"\",T=n.listYM[t]||{},C=[\"hours\",\"minutes\",\"seconds\"],x=[\"startTime\",\"endTime\"][t];if(T[0]<1&&(T[0]=1),\"year\"===e){var M,b=M=T[0]-7;b<1&&(b=M=1),w.each(new Array(15),function(e){var i=w.elem(\"li\",{\"lay-ym\":M}),r={year:M};M==T[0]&&w(i).addClass(o),i.innerHTML=M+p,d.appendChild(i),M<n.firstDate.year?(r.month=a.min.month,r.date=a.min.date):M>=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr(\"lay-ym\",M-8+\"-\"+T[1]).html(b+p+\" - \"+(M-1+p))}else if(\"month\"===e)w.each(new Array(12),function(e){var i=w.elem(\"li\",{\"lay-ym\":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?\"月\":\"\"),d.appendChild(i),T[0]<n.firstDate.year?s.date=a.min.date:T[0]>=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr(\"lay-ym\",T[0]+\"-\"+T[1]).html(T[0]+p);else if(\"time\"===e){var E=function(){w(d).find(\"ol\").each(function(e,a){w(a).find(\"li\").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[[\"hours\"],[\"hours\",\"minutes\"],[\"hours\",\"minutes\",\"seconds\"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,[\"hours\",\"minutes\",\"seconds\"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem(\"li\"),i=[\"<p>\"+r.time[e]+\"</p><ol>\"];w.each(new Array(t),function(t){i.push(\"<li\"+(n[x][C[e]]===t?' class=\"'+o+'\"':\"\")+\">\"+w.digit(t,2)+\"</li>\")}),a.innerHTML=i.join(\"\")+\"</ol>\",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),\"year\"===e||\"month\"===e)w(n.elemMain[t]).addClass(\"laydate-ym-show\"),w(d).find(\"li\").on(\"click\",function(){var r=0|w(this).attr(\"lay-ym\");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c=\"year\"===e?n.getAsYM(r,T[1]-1,\"sub\"):n.getAsYM(T[0],r,\"sub\");w.extend(i,{year:c[0],month:c[1]})}\"year\"===a.type||\"month\"===a.type?(w(d).find(\".\"+o).removeClass(o),w(this).addClass(o),\"month\"===a.type&&\"year\"===e&&(n.listYM[t][0]=r,l&&(n[[\"startDate\",\"endDate\"][t]].year=r),n.list(\"month\",t))):(n.checkDate(\"limit\").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,\"change\"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem(\"span\",{\"class\":v}),k=function(){w(d).find(\"ol\").each(function(e){var t=this,a=w(t).find(\"li\");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find(\".\"+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass(\"laydate-time-show\"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find(\"ol\").each(function(e){var t=this;w(t).find(\"li\").on(\"click\",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find(\".\"+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||\"time\"===a.type)&&n.done(null,\"change\"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find(\".\"+m).remove(),w(e.elemMain[t]).removeClass(\"laydate-ym-show laydate-time-show\")}),w(e.elem).find(\".\"+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&\"date\"!==r.type&&\"time\"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?\"addClass\":\"removeClass\"](s),e&&a&&i.hint(\"string\"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join(\"\")+\" \"+a.range+\" \"+n.parse(1):r.join(\"\")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?\"val\":\"html\";return\"static\"===n.position||w(a)[i](e||\"\"),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find(\"td\");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr(\"lay-ymd\").split(\"-\"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+\" \"+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s<t&&w(i).addClass(u)})},T.prototype.done=function(e,t){var n=this,a=n.config,i=w.extend({},n.startDate?w.extend(n.startDate,n.startTime):a.dateTime),r=w.extend({},w.extend(n.endDate,n.endTime));return w.each([i,r],function(e,t){\"month\"in t&&w.extend(t,{month:t.month+1})}),e=e||[n.parse(),i,r],\"function\"==typeof a[t||\"done\"]&&a[t||\"done\"].apply(a,e),n},T.prototype.choose=function(e){var t=this,n=t.config,a=n.dateTime,i=w(t.elem).find(\"td\"),r=e.attr(\"lay-ymd\").split(\"-\"),l=function(e){new Date;e&&w.extend(a,r),n.range&&(t.startDate?w.extend(t.startDate,r):t.startDate=w.extend({},r,t.startTime),t.startYMD=r)};if(r={year:0|r[0],month:(0|r[1])-1,date:0|r[2]},!e.hasClass(s))if(n.range){if(w.each([\"startTime\",\"endTime\"],function(e,n){t[n]=t[n]||{hours:0,minutes:0,seconds:0}}),t.endState)l(),delete t.endState,delete t.endDate,t.startState=!0,i.removeClass(o+\" \"+u),e.addClass(o);else if(t.startState){if(e.addClass(o),t.endDate?w.extend(t.endDate,r):t.endDate=w.extend({},r,t.endTime),t.newDate(r).getTime()<t.newDate(t.startYMD).getTime()){var d=w.extend({},t.endDate,{hours:t.startDate.hours,minutes:t.startDate.minutes,seconds:t.startDate.seconds});w.extend(t.endDate,t.startDate,{hours:t.endDate.hours,minutes:t.endDate.minutes,seconds:t.endDate.seconds}),t.startDate=d}n.showBottom||t.done(),t.stampRange(),t.endState=!0,t.done(null,\"change\")}else e.addClass(o),l(),t.startState=!0;w(t.footer).find(g)[t.endDate?\"removeClass\":\"addClass\"](s)}else\"static\"===n.position?(l(!0),t.calendar().done().done(null,\"change\")):\"date\"===n.type?(l(!0),t.setValue(t.parse()).remove().done()):\"datetime\"===n.type&&(l(!0),t.calendar().done(null,\"change\"))},T.prototype.tool=function(e,t){var n=this,a=n.config,i=a.dateTime,r=\"static\"===a.position,o={datetime:function(){w(e).hasClass(s)||(n.list(\"time\",0),a.range&&n.list(\"time\",1),w(e).attr(\"lay-type\",\"date\").html(n.lang().dateTips))},date:function(){n.closeList(),w(e).attr(\"lay-type\",\"datetime\").html(n.lang().timeTips)},clear:function(){n.setValue(\"\").remove(),r&&(w.extend(i,n.firstDate),n.calendar()),a.range&&(delete n.startState,delete n.endState,delete n.endDate,delete n.startTime,delete n.endTime),n.done([\"\",{},{}])},now:function(){var e=new Date;w.extend(i,n.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),n.setValue(n.parse()).remove(),r&&n.calendar(),n.done()},confirm:function(){if(a.range){if(!n.endDate)return n.hint(\"请先选择日期范围\");if(w(e).hasClass(s))return n.hint(\"time\"===a.type?l.replace(/日期/g,\"时间\"):l)}else if(w(e).hasClass(s))return n.hint(\"不在有效日期或时间范围内\");n.done(),n.setValue(n.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,n=t.config,a=n.dateTime,i=n.range&&(\"year\"===n.type||\"month\"===n.type),r=t.elemCont[e||0],o=t.listYM[e],s=function(s){var l=[\"startDate\",\"endDate\"][e],d=w(r).find(\".laydate-year-list\")[0],c=w(r).find(\".laydate-month-list\")[0];return d&&(o[0]=s?o[0]-15:o[0]+15,t.list(\"year\",e)),c&&(s?o[0]--:o[0]++,t.list(\"month\",e)),(d||c)&&(w.extend(a,{year:o[0]}),i&&(t[l].year=o[0]),n.range||t.done(null,\"change\"),t.setBtnStatus(),n.range||t.limit(w(t.footer).find(g),{year:o[0]})),d||c};return{prevYear:function(){s(\"sub\")||(a.year--,t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\"))},prevMonth:function(){var e=t.getAsYM(a.year,a.month,\"sub\");w.extend(a,{year:e[0],month:e[1]}),t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\")},nextMonth:function(){var e=t.getAsYM(a.year,a.month);w.extend(a,{year:e[0],month:e[1]}),t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\")},nextYear:function(){s()||(a.year++,t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\"))}}},T.prototype.changeEvent=function(){var e=this;e.config;w(e.elem).on(\"click\",function(e){w.stope(e)}),w.each(e.elemHeader,function(t,n){w(n[0]).on(\"click\",function(n){e.change(t).prevYear()}),w(n[1]).on(\"click\",function(n){e.change(t).prevMonth()}),w(n[2]).find(\"span\").on(\"click\",function(n){var a=w(this),i=a.attr(\"lay-ym\"),r=a.attr(\"lay-type\");i&&(i=i.split(\"-\"),e.listYM[t]=[0|i[0],0|i[1]],e.list(r,t),w(e.footer).find(D).addClass(s))}),w(n[3]).on(\"click\",function(n){e.change(t).nextMonth()}),w(n[4]).on(\"click\",function(n){e.change(t).nextYear()})}),w.each(e.table,function(t,n){var a=w(n).find(\"td\");a.on(\"click\",function(){e.choose(w(this))})}),w(e.footer).find(\"span\").on(\"click\",function(){var t=w(this).attr(\"lay-type\");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,n=function(n,a){n.on(t.trigger,function(){a&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(n(t.elem,\"bind\"),n(t.eventElem),w(document).on(\"click\",function(n){n.target!==t.elem[0]&&n.target!==t.eventElem[0]&&n.target!==w(t.closeStop)[0]&&e.remove()}).on(\"keydown\",function(t){13===t.keyCode&&w(\"#\"+e.elemID)[0]&&e.elemID===T.thisElem&&(t.preventDefault(),w(e.footer).find(g)[0].click())}),w(window).on(\"resize\",function(){return!(!e.elem||!w(r)[0])&&void e.position()}),t.elem[0].eventHandler=!0)},n.render=function(e){var t=new T(e);return a.call(t)},n.getEndDate=function(e,t){var n=new Date;return n.setFullYear(t||n.getFullYear(),e||n.getMonth()+1,1),new Date(n.getTime()-864e5).getDate()},window.lay=window.lay||w,e?(n.ready(),layui.define(function(e){n.path=layui.cache.dir,e(i,n)})):\"function\"==typeof define&&define.amd?define(function(){return n}):function(){n.ready(),window.laydate=n}()}();!function(e,t){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&\"length\"in e&&e.length,n=pe.type(e);return\"function\"!==n&&!pe.isWindow(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if(\"string\"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener(\"DOMContentLoaded\",s),e.removeEventListener(\"load\",s)):(re.detachEvent(\"onreadystatechange\",s),e.detachEvent(\"onload\",s))}function s(){(re.addEventListener||\"load\"===e.event.type||\"complete\"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r=\"data-\"+t.replace(_e,\"-$1\").toLowerCase();if(n=e.getAttribute(r),\"string\"==typeof n){try{n=\"true\"===n||\"false\"!==n&&(\"null\"===n?null:+n+\"\"===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if((\"data\"!==t||!pe.isEmptyObject(e[t]))&&\"toJSON\"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||\"string\"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),\"object\"!=typeof t&&\"function\"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),\"string\"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(\" \")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,\"\")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?\"\":\"px\"),c=(pe.cssNumber[t]||\"px\"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||\".5\",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split(\"|\"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,\"globalEval\",!t||pe._data(t[r],\"globalEval\"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x<d;x++)if(a=e[x],a||0===a)if(\"object\"===pe.type(a))pe.merge(v,a.nodeType?[a]:a);else if(Ue.test(a)){for(u=u||y.appendChild(t.createElement(\"div\")),l=(We.exec(a)||[\"\",\"\"])[1].toLowerCase(),f=Xe[l]||Xe._default,u.innerHTML=f[1]+pe.htmlPrefilter(a)+f[2],o=f[0];o--;)u=u.lastChild;if(!fe.leadingWhitespace&&$e.test(a)&&v.push(t.createTextNode($e.exec(a)[0])),!fe.tbody)for(a=\"table\"!==l||Ve.test(a)?\"<table>\"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],\"tbody\")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent=\"\";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,\"input\"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),\"script\"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||\"\")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){\"string\"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,\"table\")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,\"tr\")?e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\")):e}function C(e){return e.type=(null!==pe.find.attr(e,\"type\"))+\"/\"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r<i;r++)pe.event.add(t,n,s[n][r])}a.data&&(a.data=pe.extend({},a.data))}}function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!fe.noCloneEvent&&t[pe.expando]){i=pe._data(t);for(r in i.events)pe.removeEvent(t,r,i.handle);t.removeAttribute(pe.expando)}\"script\"===n&&t.text!==e.text?(C(t).text=e.text,E(t)):\"object\"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),fe.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):\"input\"===n&&Be.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):\"option\"===n?t.defaultSelected=t.selected=e.defaultSelected:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}}function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-1,p=t[0],g=pe.isFunction(p);if(g||f>1&&\"string\"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,\"script\"),C),a=s.length;c<f;c++)o=l,c!==d&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,\"script\"))),n.call(e[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,pe.map(s,E),c=0;c<a;c++)o=s[c],Ie.test(o.type||\"\")&&!pe._data(o,\"globalEval\")&&pe.contains(u,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||\"\").replace(ot,\"\")));l=i=null}return e}function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||pe.cleanData(h(r)),r.parentNode&&(n&&pe.contains(r.ownerDocument,r)&&g(h(r,\"script\")),r.parentNode.removeChild(r));return e}function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n[0],\"display\");return n.detach(),r}function j(e){var t=re,n=lt[e];return n||(n=D(e,t),\"none\"!==n&&n||(ut=(ut||pe(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style&&(o[a]=pe._data(r,\"olddisplay\"),n=r.style.display,t?(o[a]||\"none\"!==n||(r.style.display=\"\"),\"\"===r.style.display&&Re(r)&&(o[a]=pe._data(r,\"olddisplay\",j(r.nodeName)))):(i=Re(r),(n&&\"none\"!==n||!i)&&pe._data(r,\"olddisplay\",i?n:pe.css(r,\"display\"))));for(a=0;a<s;a++)r=e[a],r.style&&(t&&\"none\"!==r.style.display&&\"\"!==r.style.display||(r.style.display=t?o[a]||\"\":\"none\"));return e}function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||\"px\"):t}function F(e,t,n,r,i){for(var o=n===(r?\"border\":\"content\")?4:\"width\"===t?1:0,a=0;o<4;o+=2)\"margin\"===n&&(a+=pe.css(e,n+Oe[o],!0,i)),r?(\"content\"===n&&(a-=pe.css(e,\"padding\"+Oe[o],!0,i)),\"margin\"!==n&&(a-=pe.css(e,\"border\"+Oe[o]+\"Width\",!0,i))):(a+=pe.css(e,\"padding\"+Oe[o],!0,i),\"padding\"!==n&&(a+=pe.css(e,\"border\"+Oe[o]+\"Width\",!0,i)));return a}function M(t,n,r){var i=!0,o=\"width\"===n?t.offsetWidth:t.offsetHeight,a=ht(t),s=fe.boxSizing&&\"border-box\"===pe.css(t,\"boxSizing\",!1,a);if(re.msFullscreenElement&&e.top!==e&&t.getClientRects().length&&(o=Math.round(100*t.getBoundingClientRect()[n])),o<=0||null==o){if(o=gt(t,n,a),(o<0||null==o)&&(o=t.style[n]),ft.test(o))return o;i=s&&(fe.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+F(t,n,r||(s?\"border\":\"content\"),i,a)+\"px\"}function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[\"margin\"+n]=r[\"padding\"+n]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType&&Re(e),g=pe._data(e,\"fxshow\");n.queue||(s=pe._queueHooks(e,\"fx\"),null==s.unqueued&&(s.unqueued=0,u=s.empty.fire,s.empty.fire=function(){s.unqueued||u()}),s.unqueued++,f.always(function(){f.always(function(){s.unqueued--,pe.queue(e,\"fx\").length||s.empty.fire()})})),1===e.nodeType&&(\"height\"in t||\"width\"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],l=pe.css(e,\"display\"),c=\"none\"===l?pe._data(e,\"olddisplay\")||j(e.nodeName):l,\"inline\"===c&&\"none\"===pe.css(e,\"float\")&&(fe.inlineBlockNeedsLayout&&\"inline\"!==j(e.nodeName)?p.zoom=1:p.display=\"inline-block\")),n.overflow&&(p.overflow=\"hidden\",fe.shrinkWrapBlocks()||f.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],St.exec(i)){if(delete t[r],o=o||\"toggle\"===i,i===(h?\"hide\":\"show\")){if(\"show\"!==i||!g||void 0===g[r])continue;h=!0}d[r]=g&&g[r]||pe.style(e,r)}else l=void 0;if(pe.isEmptyObject(d))\"inline\"===(\"none\"===l?j(e.nodeName):l)&&(p.display=l);else{g?\"hidden\"in g&&(h=g.hidden):g=pe._data(e,\"fxshow\",{}),o&&(g.hidden=!h),h?pe(e).show():f.done(function(){pe(e).hide()}),f.done(function(){var t;pe._removeData(e,\"fxshow\");for(t in d)pe.style(e,t,d[t])});for(r in d)a=B(h?g[r]:0,r,f),r in g||(g[r]=a.start,h&&(a.end=a.start,a.start=\"width\"===r||\"height\"===r?1:0))}}function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e[n],pe.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=pe.cssHooks[r],a&&\"expand\"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Nt||R(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;a<u;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),o<1&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:pe.extend({},t),opts:pe.extend(!0,{specialEasing:{},easing:pe.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||R(),duration:n.duration,tweens:[],createTween:function(t,n){var r=pe.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(I(c,l.opts.specialEasing);o<a;o++)if(r=$.prefilters[o].call(l,e,c,l.opts))return pe.isFunction(r.stop)&&(pe._queueHooks(l.elem,l.opts.queue).stop=pe.proxy(r.stop,r)),r;return pe.map(c,B,l),pe.isFunction(l.opts.start)&&l.opts.start.call(e,l),pe.fx.timer(pe.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function z(e){return pe.attr(e,\"class\")||\"\"}function X(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(De)||[];if(pe.isFunction(n))for(;r=o[i++];)\"+\"===r.charAt(0)?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||a||o[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),i(l),!1)}),u}var o={},a=e===Qt;return i(t.dataTypes[0])||!o[\"*\"]&&i(\"*\")}function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&pe.extend(!0,e,n),e}function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(i)for(a in s)if(s[a]&&s[a].test(i)){u.unshift(a);break}if(u[0]in n)o=u[0];else{for(a in n){if(!u[0]||e.converters[a+\" \"+u[0]]){o=a;break}r||(r=a)}o=o||r}if(o)return o!==u[0]&&u.unshift(o),n[o]}function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(a=l[u+\" \"+o]||l[\"* \"+o],!a)for(i in l)if(s=i.split(\" \"),s[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){a===!0?a=l[i]:l[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(f){return{state:\"parsererror\",error:a?f:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}function G(e){return e.style&&e.style.display||pe.css(e,\"display\")}function K(e){for(;e&&1===e.nodeType;){if(\"none\"===G(e)||\"hidden\"===e.type)return!0;e=e.parentNode}return!1}function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn.test(e)?r(e,i):Q(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==pe.type(t))r(e,t);else for(i in t)Q(e+\"[\"+i+\"]\",t[i],n,r)}function Z(){try{return new e.XMLHttpRequest}catch(t){}}function ee(){try{return new e.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(t){}}function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}var ne=[],re=e.document,ie=ne.slice,oe=ne.concat,ae=ne.push,se=ne.indexOf,ue={},le=ue.toString,ce=ue.hasOwnProperty,fe={},de=\"1.12.3\",pe=function(e,t){return new pe.fn.init(e,t)},he=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,ge=/^-ms-/,me=/-([\\da-z])/gi,ye=function(e,t){return t.toUpperCase()};pe.fn=pe.prototype={jquery:de,constructor:pe,selector:\"\",length:0,toArray:function(){return ie.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:ie.call(this)},pushStack:function(e){var t=pe.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return pe.each(this,e)},map:function(e){return this.pushStack(pe.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(ie.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ae,sort:ne.sort,splice:ne.splice},pe.extend=pe.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||pe.isFunction(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(l&&n&&(pe.isPlainObject(n)||(t=pe.isArray(n)))?(t?(t=!1,o=e&&pe.isArray(e)?e:[]):o=e&&pe.isPlainObject(e)?e:{},a[r]=pe.extend(l,o,n)):void 0!==n&&(a[r]=n));return a},pe.extend({expando:\"jQuery\"+(de+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\"function\"===pe.type(e)},isArray:Array.isArray||function(e){return\"array\"===pe.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!pe.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||\"object\"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,\"constructor\")&&!ce.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?ue[le.call(e)]||\"object\":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,\"ms-\").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;i<r&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(he,\"\")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?pe.merge(r,\"string\"==typeof e?[e]:e):ae.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(se)return se.call(t,e,n);for(r=t.length,n=n?n<0?Math.max(0,r+n):n:0;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,r){var i,o,a=0,s=[];if(n(e))for(i=e.length;a<i;a++)o=t(e[a],a,r),null!=o&&s.push(o);else for(a in e)o=t(e[a],a,r),null!=o&&s.push(o);return oe.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if(\"string\"==typeof t&&(i=e[t],t=e,e=i),pe.isFunction(e))return n=ie.call(arguments,2),r=function(){return e.apply(t||this,n.concat(ie.call(arguments)))},r.guid=e.guid=e.guid||pe.guid++,r},now:function(){return+new Date},support:fe}),\"function\"==typeof Symbol&&(pe.fn[Symbol.iterator]=ne[Symbol.iterator]),pe.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){ue[\"[object \"+t+\"]\"]=t.toLowerCase()});var ve=function(e){function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],\"string\"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&((t?t.ownerDocument||t:B)!==H&&L(t),t=t||H,_)){if(11!==g&&(l=ye.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(w.qsa&&!X[e+\" \"]&&(!F||!F.test(e))){if(1!==g)h=t,p=e;else if(\"object\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\"id\"))?s=s.replace(xe,\"\\\\$&\"):t.setAttribute(\"id\",s=P),f=N(e),o=f.length,u=de.test(s)?\"#\"+s:\"[id='\"+s+\"']\";o--;)f[o]=u+\" \"+d(f[o]);p=f.join(\",\"),h=ve.test(e)&&c(t.parentNode)||t}if(p)try{return Q.apply(n,h.querySelectorAll(p)),n}catch(m){}finally{s===P&&t.removeAttribute(\"id\")}}}return S(e.replace(se,\"$1\"),t,n,r)}function n(){function e(n,r){return t.push(n+\" \")>T.cacheLength&&delete e[t.shift()],e[n+\" \"]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement(\"div\");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split(\"|\"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return\"input\"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&\"parentNode\"===r,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[P]||(t[P]={}),u=l[t.uniqueID]||(l[t.uniqueID]={}),(s=u[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(u[r]=c,c[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r(function(r,a,s,u){var l,c,f,d=[],p=[],h=a.length,y=r||g(t||\"*\",s.nodeType?[s]:s,[]),v=!e||!r&&t?y:m(y,d,e,s,u),x=n?o||(r?e:h||i)?[]:a:v;if(n&&n(v,x,s,u),i)for(l=m(x,p),i(l,[],s,u),c=l.length;c--;)(f=l[c])&&(x[p[c]]=!(v[p[c]]=f));if(r){if(o||e){if(o){for(l=[],c=x.length;c--;)(f=x[c])&&l.push(v[c]=f);o(null,x=[],l,u)}for(c=x.length;c--;)(f=x[c])&&(l=o?ee(r,f):d[c])>-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[\" \"],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s<i;s++)if(n=T.relative[e[s].type])c=[p(h(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;r<i&&!T.relative[e[r].type];r++);return y(s>1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace(se,\"$1\"),n,s<r&&v(e.slice(s,r)),r<i&&v(e=e.slice(r)),r<i&&d(e))}c.push(n)}return h(c)}function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h=\"0\",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG(\"*\",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P=\"sizzle\"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},te=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",ne=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",re=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",ie=\"\\\\[\"+ne+\"*(\"+re+\")(?:\"+ne+\"*([*^$|!~]?=)\"+ne+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+re+\"))|)\"+ne+\"*\\\\]\",oe=\":(\"+re+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+ie+\")*)|.*)\\\\)|)\",ae=new RegExp(ne+\"+\",\"g\"),se=new RegExp(\"^\"+ne+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+ne+\"+$\",\"g\"),ue=new RegExp(\"^\"+ne+\"*,\"+ne+\"*\"),le=new RegExp(\"^\"+ne+\"*([>+~]|\"+ne+\")\"+ne+\"*\"),ce=new RegExp(\"=\"+ne+\"*([^\\\\]'\\\"]*?)\"+ne+\"*\\\\]\",\"g\"),fe=new RegExp(oe),de=new RegExp(\"^\"+re+\"$\"),pe={ID:new RegExp(\"^#(\"+re+\")\"),CLASS:new RegExp(\"^\\\\.(\"+re+\")\"),TAG:new RegExp(\"^(\"+re+\"|[*])\"),ATTR:new RegExp(\"^\"+ie),PSEUDO:new RegExp(\"^\"+oe),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+ne+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+ne+\"*(?:([+-]|)\"+ne+\"*(\\\\d+)|))\"+ne+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+te+\")$\",\"i\"),needsContext:new RegExp(\"^\"+ne+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+ne+\"*((?:-\\\\d)?\\\\d*)\"+ne+\"*\\\\)|)(?=[^-]|$)\",\"i\")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\\d$/i,me=/^[^{]+\\{\\s*\\[native \\w/,ye=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ve=/[+~]/,xe=/'|\\\\/g,be=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+ne+\"?|(\"+ne+\")|.)\",\"ig\"),we=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",Te,!1):n.attachEvent&&n.attachEvent(\"onunload\",Te)),w.attributes=i(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute(\"id\")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML=\"<a id='\"+P+\"'></a><select id='\"+P+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&F.push(\"[*^$]=\"+ne+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||F.push(\"\\\\[\"+ne+\"*(?:value|\"+te+\")\"),e.querySelectorAll(\"[id~=\"+P+\"-]\").length||F.push(\"~=\"),e.querySelectorAll(\":checked\").length||F.push(\":checked\"),e.querySelectorAll(\"a#\"+P+\"+*\").length||F.push(\".#.+[+~]\")}),i(function(e){var t=H.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&F.push(\"name\"+ne+\"*[*^$|!~]?=\"),e.querySelectorAll(\":enabled\").length||F.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),F.push(\",.*:\")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,\"div\"),O.call(e,\"[s!='']:x\"),M.push(\"!=\",oe)}),F=F.length&&new RegExp(F.join(\"|\")),M=M.length&&new RegExp(M.join(\"|\")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,\"='$1']\"),w.matchesSelector&&_&&!X[n+\" \"]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||\"\").replace(be,we),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+\" \"];return t||(t=new RegExp(\"(^|\"+ne+\")\"+e+\"(\"+ne+\"|$)\"))&&$(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?\"!=\"===n:!n||(o+=\"\",\"=\"===n?o===r:\"!=\"===n?o!==r:\"^=\"===n?r&&0===o.indexOf(r):\"*=\"===n?r&&o.indexOf(r)>-1:\"$=\"===n?r&&o.slice(-r.length)===r:\"~=\"===n?(\" \"+o.replace(ae,\" \")+\" \").indexOf(r)>-1:\"|=\"===n&&(o===r||o.slice(0,r.length+1)===r+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?\"nextSibling\":\"previousSibling\",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),\nl=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error(\"unsupported pseudo: \"+e);return o[P]?o(n):o.length>1?(i=[e,e,\"\",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,\"$1\"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||\"\")||t.error(\"unsupported lang: \"+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+\"-\");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[b]=s(b);for(b in{submit:!0,reset:!0})T.pseudos[b]=u(b);return f.prototype=T.filters=T.pseudos,T.setFilters=new f,N=t.tokenize=function(e,n){var r,i,o,a,s,u,l,c=z[e+\" \"];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(i=ue.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=le.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se,\" \")}),s=s.slice(r.length));for(a in T.filter)!(i=pe[a].exec(s))||l[a]&&!(i=l[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},k=t.compile=function(e,t){var n,r=[],i=[],o=X[e+\" \"];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=v(t[n]),o[P]?r.push(o):i.push(o);o=X(e,x(i,r)),o.selector=e}return o},S=t.select=function(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,f=!r&&N(e=l.selector||e);if(n=n||[],1===f.length){if(o=f[0]=f[0].slice(0),o.length>2&&\"ID\"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split(\"\").sort(U).join(\"\")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement(\"div\"))}),i(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||o(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||o(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute(\"disabled\")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[\":\"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/,Ce=/^.[^:#\\[\\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if(\"string\"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t<i;t++)if(pe.contains(r[t],this))return!0}));for(t=0;t<i;t++)pe.find(e,r[t],n);return n=this.pushStack(i>1?pe.unique(n):n),n.selector=this.selector?this.selector+\" \"+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,\"string\"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,\"string\"==typeof e){if(r=\"<\"===e.charAt(0)&&\">\"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?\"undefined\"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(pe.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=we.test(e)||\"string\"!=typeof e?pe(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,\"parentNode\")},parentsUntil:function(e,t,n){return xe(e,\"parentNode\",n)},next:function(e){return i(e,\"nextSibling\")},prev:function(e){return i(e,\"previousSibling\")},nextAll:function(e){return xe(e,\"nextSibling\")},prevAll:function(e){return xe(e,\"previousSibling\")},nextUntil:function(e,t,n){return xe(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return xe(e,\"previousSibling\",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,\"iframe\")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\\S+/g;pe.Callbacks=function(e){e=\"string\"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u<a.length;)a[u].apply(n[0],n[1])===!1&&e.stopOnFalse&&(u=a.length,n=!1);e.memory||(n=!1),t=!1,i&&(a=n?[]:\"\")},c={add:function(){return a&&(n&&!t&&(u=a.length-1,s.push(n)),function r(t){pe.each(t,function(t,n){pe.isFunction(n)?e.unique&&c.has(n)||a.push(n):n&&n.length&&\"string\"!==pe.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return pe.each(arguments,function(e,t){for(var n;(n=pe.inArray(t,a,n))>-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n=\"\",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[[\"resolve\",\"done\",pe.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",pe.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",pe.Callbacks(\"memory\")]],n=\"pending\",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+\"With\"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+\"With\"](this===i?r:this,arguments),this},i[o[0]+\"With\"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i<a;i++)o[i]&&pe.isFunction(o[i].promise)?o[i].promise().progress(l(i,n,t)).done(l(i,r,o)).fail(u.reject):--s;return s||u.resolveWith(r,o),u.promise()}});var je;pe.fn.ready=function(e){return pe.ready.promise().done(e),this},pe.extend({isReady:!1,readyWait:1,holdReady:function(e){e?pe.readyWait++:pe.ready(!0)},ready:function(e){(e===!0?--pe.readyWait:pe.isReady)||(pe.isReady=!0,e!==!0&&--pe.readyWait>0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler(\"ready\"),pe(re).off(\"ready\"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),\"complete\"===re.readyState||\"loading\"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener(\"DOMContentLoaded\",s),e.addEventListener(\"load\",s);else{re.attachEvent(\"onreadystatechange\",s),e.attachEvent(\"onload\",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll(\"left\")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst=\"0\"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName(\"body\")[0],n&&n.style&&(t=re.createElement(\"div\"),r=re.createElement(\"div\"),r.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",n.appendChild(r).appendChild(t),\"undefined\"!=typeof t.style.zoom&&(t.style.cssText=\"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement(\"div\");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+\" \").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute(\"classid\")===t)},qe=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{\"applet \":!0,\"embed \":!0,\"object \":\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,\"parsedAttrs\"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf(\"data-\")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,\"parsedAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks(\"once memory\").add(function(){pe._removeData(e,t+\"queue\"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?pe.queue(this[0],e):void 0===t?this:this.each(function(){var n=pe.queue(this,e,t);pe._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&pe.dequeue(this,e)})},dequeue:function(e){return this.each(function(){pe.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=pe.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";a--;)n=pe._data(o[a],e+\"queueHooks\"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;fe.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=re.getElementsByTagName(\"body\")[0],n&&n.style?(t=re.createElement(\"div\"),r=re.createElement(\"div\"),r.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",n.appendChild(r).appendChild(t),\"undefined\"!=typeof t.style.zoom&&(t.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1\",t.appendChild(re.createElement(\"div\")).style.width=\"5px\",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Fe=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,Me=new RegExp(\"^(?:([+-])=|)(\"+Fe+\")([a-z%]*)$\",\"i\"),Oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],Re=function(e,t){return e=t||e,\"none\"===pe.css(e,\"display\")||!pe.contains(e.ownerDocument,e)},Pe=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===pe.type(n)){i=!0;for(s in n)Pe(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,pe.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(pe(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},Be=/^(?:checkbox|radio)$/i,We=/<([\\w:-]+)/,Ie=/^$|\\/(?:java|ecma)script/i,$e=/^\\s+/,ze=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video\";!function(){var e=re.createElement(\"div\"),t=re.createDocumentFragment(),n=re.createElement(\"input\");e.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName(\"tbody\").length,fe.htmlSerialize=!!e.getElementsByTagName(\"link\").length,fe.html5Clone=\"<:nav></:nav>\"!==re.createElement(\"nav\").cloneNode(!0).outerHTML,n.type=\"checkbox\",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML=\"<textarea>x</textarea>\",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement(\"input\"),n.setAttribute(\"type\",\"radio\"),n.setAttribute(\"checked\",\"checked\"),n.setAttribute(\"name\",\"t\"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],area:[1,\"<map>\",\"</map>\"],param:[1,\"<object>\",\"</object>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:fe.htmlSerialize?[0,\"\",\"\"]:[1,\"X<div>\",\"</div>\"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\\w+;/,Ve=/<tbody/i;!function(){var t,n,r=re.createElement(\"div\");for(t in{submit:!0,change:!0,focusin:!0})n=\"on\"+t,(fe[t]=n in e)||(r.setAttribute(n,\"t\"),fe[t]=r.attributes[n].expando===!1);r=null}();var Ye=/^(?:input|select|textarea)$/i,Je=/^key/,Ge=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^(?:focusinfocus|focusoutblur)$/,Qe=/^([^.]*)(?:\\.(.+)|)/;pe.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe._data(e);if(m){for(n.handler&&(u=n,n=u.handler,i=u.selector),n.guid||(n.guid=pe.guid++),(a=m.events)||(a=m.events={}),(c=m.handle)||(c=m.handle=function(e){return\"undefined\"==typeof pe||e&&pe.event.triggered===e.type?void 0:pe.event.dispatch.apply(c.elem,arguments)},c.elem=e),t=(t||\"\").match(De)||[\"\"],s=t.length;s--;)o=Qe.exec(t[s])||[],p=g=o[1],h=(o[2]||\"\").split(\".\").sort(),p&&(l=pe.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=pe.event.special[p]||{},f=pe.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&pe.expr.match.needsContext.test(i),namespace:h.join(\".\")},u),(d=a[p])||(d=a[p]=[],d.delegateCount=0,l.setup&&l.setup.call(e,r,h,c)!==!1||(e.addEventListener?e.addEventListener(p,c,!1):e.attachEvent&&e.attachEvent(\"on\"+p,c))),l.add&&(l.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,f):d.push(f),pe.event.global[p]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe.hasData(e)&&pe._data(e);if(m&&(c=m.events)){for(t=(t||\"\").match(De)||[\"\"],l=t.length;l--;)if(s=Qe.exec(t[l])||[],p=g=s[1],h=(s[2]||\"\").split(\".\").sort(),p){for(f=pe.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=c[p]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),u=o=d.length;o--;)a=d[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&(\"**\"!==r||!a.selector)||(d.splice(o,1),a.selector&&d.delegateCount--,f.remove&&f.remove.call(e,a));u&&!d.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||pe.removeEvent(e,p,m.handle),delete c[p])}else for(p in c)pe.event.remove(e,p+t[l],n,r,!0);pe.isEmptyObject(c)&&(delete m.handle,pe._removeData(e,\"events\"))}},trigger:function(t,n,r,i){var o,a,s,u,l,c,f,d=[r||re],p=ce.call(t,\"type\")?t.type:t,h=ce.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=c=r=r||re,3!==r.nodeType&&8!==r.nodeType&&!Ke.test(p+pe.event.triggered)&&(p.indexOf(\".\")>-1&&(h=p.split(\".\"),p=h.shift(),h.sort()),a=p.indexOf(\":\")<0&&\"on\"+p,t=t[pe.expando]?t:new pe.Event(p,\"object\"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,\"events\")||{})[t.type]&&pe._data(s,\"handle\"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,\"events\")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&(\"click\"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||\"click\"!==e.type)){for(r=[],n=0;n<s;n++)o=t[n],i=o.selector+\" \",void 0===r[i]&&(r[i]=o.needsContext?pe(i,this).index(u)>-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[pe.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=Ge.test(i)?this.mouseHooks:Je.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new pe.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||re),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:\"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||re,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==b()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:\"focusin\"},blur:{trigger:function(){if(this===b()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(pe.nodeName(this,\"input\")&&\"checkbox\"===this.type&&this.click)return this.click(),!1},_default:function(e){return pe.nodeName(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=pe.extend(new pe.Event,n,{type:e,isSimulated:!0});pe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},pe.removeEvent=re.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r=\"on\"+t;e.detachEvent&&(\"undefined\"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},pe.Event=function(e,t){return this instanceof pe.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?v:x):this.type=e,t&&pe.extend(this,t),this.timeStamp=e&&e.timeStamp||pe.now(),void(this[pe.expando]=!0)):new pe.Event(e,t)},pe.Event.prototype={constructor:pe.Event,isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=v,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=v,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=v,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},pe.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){pe.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||pe.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),fe.submit||(pe.event.special.submit={setup:function(){return!pe.nodeName(this,\"form\")&&void pe.event.add(this,\"click._submit keypress._submit\",function(e){var t=e.target,n=pe.nodeName(t,\"input\")||pe.nodeName(t,\"button\")?pe.prop(t,\"form\"):void 0;n&&!pe._data(n,\"submit\")&&(pe.event.add(n,\"submit._submit\",function(e){e._submitBubble=!0}),pe._data(n,\"submit\",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&pe.event.simulate(\"submit\",this.parentNode,e))},teardown:function(){return!pe.nodeName(this,\"form\")&&void pe.event.remove(this,\"._submit\")}}),fe.change||(pe.event.special.change={setup:function(){return Ye.test(this.nodeName)?(\"checkbox\"!==this.type&&\"radio\"!==this.type||(pe.event.add(this,\"propertychange._change\",function(e){\"checked\"===e.originalEvent.propertyName&&(this._justChanged=!0)}),pe.event.add(this,\"click._change\",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),pe.event.simulate(\"change\",this,e)})),!1):void pe.event.add(this,\"beforeactivate._change\",function(e){var t=e.target;Ye.test(t.nodeName)&&!pe._data(t,\"change\")&&(pe.event.add(t,\"change._change\",function(e){!this.parentNode||e.isSimulated||e.isTrigger||pe.event.simulate(\"change\",this.parentNode,e)}),pe._data(t,\"change\",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||\"radio\"!==t.type&&\"checkbox\"!==t.type)return e.handleObj.handler.apply(this,arguments)},teardown:function(){return pe.event.remove(this,\"._change\"),!Ye.test(this.nodeName)}}),fe.focusin||pe.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){pe.event.simulate(t,e.target,pe.event.fix(e))};pe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=pe._data(r,t);i||r.addEventListener(e,n,!0),pe._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=pe._data(r,t)-1;i?pe._data(r,t,i):(r.removeEventListener(e,n,!0),pe._removeData(r,t))}}}),pe.fn.extend({on:function(e,t,n,r){return w(this,e,t,n,r)},one:function(e,t,n,r){return w(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,pe(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return t!==!1&&\"function\"!=typeof t||(n=t,t=void 0),n===!1&&(n=x),this.each(function(){pe.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){pe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return pe.event.trigger(e,t,n,!0)}});var Ze=/ jQuery\\d+=\"(?:null|\\d+)\"/g,et=new RegExp(\"<(?:\"+ze+\")[\\\\s/>]\",\"i\"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,nt=/<script|<style|<link/i,rt=/checked\\s*(?:[^=]|=\\s*.checked.)/i,it=/^true\\/(.*)/,ot=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,at=p(re),st=at.appendChild(re.createElement(\"div\"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test(\"<\"+e.nodeName+\">\")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,\"script\"),r.length>0&&g(r,!u&&h(e,\"script\")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||\"undefined\"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,\"select\")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,\"\"):void 0;if(\"string\"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(pe.cleanData(h(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return S(this,arguments,function(t){var n=this.parentNode;pe.inArray(this,e)<0&&(pe.cleanData(h(this)),\nn&&n.replaceChild(t,this))},e)}}),pe.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){pe.fn[e]=function(e){for(var n,r=0,i=[],o=pe(e),a=o.length-1;r<=a;r++)n=r===a?this:this.clone(!0),pe(o[r])[t](n),ae.apply(i,n.get());return this.pushStack(i)}});var ut,lt={HTML:\"block\",BODY:\"block\"},ct=/^margin/,ft=new RegExp(\"^(\"+Fe+\")(?!px)[a-z%]+$\",\"i\"),dt=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i},pt=re.documentElement;!function(){function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssText=\"-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",n=i=s=!1,r=a=!0,e.getComputedStyle&&(c=e.getComputedStyle(l),n=\"1%\"!==(c||{}).top,s=\"2px\"===(c||{}).marginLeft,i=\"4px\"===(c||{width:\"4px\"}).width,l.style.marginRight=\"50%\",r=\"4px\"===(c||{marginRight:\"4px\"}).marginRight,t=l.appendChild(re.createElement(\"div\")),t.style.cssText=l.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",t.style.marginRight=t.style.width=\"0\",l.style.width=\"1px\",a=!parseFloat((e.getComputedStyle(t)||{}).marginRight),l.removeChild(t)),l.style.display=\"none\",o=0===l.getClientRects().length,o&&(l.style.display=\"\",l.innerHTML=\"<table><tr><td></td><td>t</td></tr></table>\",t=l.getElementsByTagName(\"td\"),t[0].style.cssText=\"margin:0;border:0;padding:0;display:none\",o=0===t[0].offsetHeight,o&&(t[0].style.display=\"\",t[1].style.display=\"none\",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement(\"div\"),l=re.createElement(\"div\");l.style&&(l.style.cssText=\"float:left;opacity:.5\",fe.opacity=\"0.5\"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",fe.clearCloneStyle=\"content-box\"===l.style.backgroundClip,u=re.createElement(\"div\"),u.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",l.innerHTML=\"\",u.appendChild(l),fe.boxSizing=\"\"===l.style.boxSizing||\"\"===l.style.MozBoxSizing||\"\"===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,\"\"!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+\"\"}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left=\"fontSize\"===t?\"1em\":a,a=s.pixelLeft+\"px\",s.left=r,o&&(i.left=o)),void 0===a?a:a+\"\"||\"auto\"});var yt=/alpha\\([^)]*\\)/i,vt=/opacity\\s*=\\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp(\"^(\"+Fe+\")(.*)$\",\"i\"),wt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Tt={letterSpacing:\"0\",fontWeight:\"400\"},Ct=[\"Webkit\",\"O\",\"Moz\",\"ms\"],Et=re.createElement(\"div\").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":fe.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,\"string\"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o=\"number\"),null!=n&&n===n&&(\"number\"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?\"\":\"px\")),fe.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(u[t]=\"inherit\"),!(a&&\"set\"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&\"get\"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),\"normal\"===o&&t in Tt&&(o=Tt[t]),\"\"===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each([\"height\",\"width\"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,\"display\"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&\"border-box\"===pe.css(e,\"boxSizing\",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":t?\"1\":\"\"},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?\"alpha(opacity=\"+100*t+\")\":\"\",o=r&&r.filter||n.filter||\"\";n.zoom=1,(t>=1||\"\"===t)&&\"\"===pe.trim(o.replace(yt,\"\"))&&n.removeAttribute&&(n.removeAttribute(\"filter\"),\"\"===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+\" \"+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:\"inline-block\"},gt,[e,\"marginRight\"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,\"marginLeft\"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+\"px\"}),pe.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a<i;a++)o[t[a]]=pe.css(e,t[a],!1,r);return o}return void 0!==n?pe.style(e,t,n):pe.css(e,t)},e,t,arguments.length>1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?\"\":\"px\")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,\"\"),t&&\"auto\"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=[\"*\"]):e=e.match(De);for(var n,r=0,i=e.length;r<i;r++)n=e[r],$.tweeners[n]=$.tweeners[n]||[],$.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?$.prefilters.unshift(e):$.prefilters.push(e)}}),pe.speed=function(e,t,n){var r=e&&\"object\"==typeof e?pe.extend({},e):{complete:n||!n&&t||pe.isFunction(e)&&e,duration:e,easing:n&&t||t&&!pe.isFunction(t)&&t};return r.duration=pe.fx.off?0:\"number\"==typeof r.duration?r.duration:r.duration in pe.fx.speeds?pe.fx.speeds[r.duration]:pe.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){pe.isFunction(r.old)&&r.old.call(this),r.queue&&pe.dequeue(this,r.queue)},r},pe.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Re).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=pe.isEmptyObject(e),o=pe.speed(t,n,r),a=function(){var t=$(this,pe.extend({},e),o);(i||pe._data(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=pe.timers,a=pe._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&At.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||pe.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||\"fx\"),this.each(function(){var t,n=pe._data(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=pe.timers,a=r?r.length:0;for(n.finish=!0,pe.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),pe.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=pe.fn[t];pe.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(P(t,!0),e,r,i)}}),pe.each({slideDown:P(\"show\"),slideUp:P(\"hide\"),slideToggle:P(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){pe.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),pe.timers=[],pe.fx.tick=function(){var e,t=pe.timers,n=0;for(Nt=pe.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||pe.fx.stop(),Nt=void 0},pe.fx.timer=function(e){pe.timers.push(e),e()?pe.fx.start():pe.timers.pop()},pe.fx.interval=13,pe.fx.start=function(){kt||(kt=e.setInterval(pe.fx.tick,pe.fx.interval))},pe.fx.stop=function(){e.clearInterval(kt),kt=null},pe.fx.speeds={slow:600,fast:200,_default:400},pe.fn.delay=function(t,n){return t=pe.fx?pe.fx.speeds[t]||t:t,n=n||\"fx\",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e,t=re.createElement(\"input\"),n=re.createElement(\"div\"),r=re.createElement(\"select\"),i=r.appendChild(re.createElement(\"option\"));n=re.createElement(\"div\"),n.setAttribute(\"className\",\"t\"),n.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",e=n.getElementsByTagName(\"a\")[0],t.setAttribute(\"type\",\"checkbox\"),n.appendChild(t),e=n.getElementsByTagName(\"a\")[0],e.style.cssText=\"top:1px\",fe.getSetAttribute=\"t\"!==n.className,fe.style=/top/.test(e.getAttribute(\"style\")),fe.hrefNormalized=\"/a\"===e.getAttribute(\"href\"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement(\"form\").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement(\"input\"),t.setAttribute(\"value\",\"\"),fe.input=\"\"===t.getAttribute(\"value\"),t.value=\"t\",t.setAttribute(\"type\",\"radio\"),fe.radioValue=\"t\"===t.value}();var Dt=/\\r/g,jt=/[\\x20\\t\\r\\n\\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i=\"\":\"number\"==typeof i?i+=\"\":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?\"\":e+\"\"})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:(n=i.value,\"string\"==typeof n?n.replace(Dt,\"\"):null==n?\"\":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,\"value\");return null!=t?t:pe.trim(pe.text(e)).replace(jt,\" \")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o=\"select-one\"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&(fe.optDisabled?!n.disabled:null===n.getAttribute(\"disabled\"))&&(!n.parentNode.disabled||!pe.nodeName(n.parentNode,\"optgroup\"))){if(t=pe(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=pe.makeArray(t),a=i.length;a--;)if(r=i[a],pe.inArray(pe.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each([\"radio\",\"checkbox\"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&\"radio\"===t&&pe.nodeName(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase(\"default-\"+n)]=e[r]=!1:pe.attr(e,n,\"\"),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase(\"default-\"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase(\"default-\"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,\"input\")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+=\"\",\"value\"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&\"\"!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,\"\"!==t&&t,n)}},pe.each([\"width\",\"height\"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(\"\"===n)return e.setAttribute(t,\"auto\"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+\"\"}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,\"tabindex\");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),fe.hrefNormalized||pe.each([\"href\",\"src\"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype=\"encoding\");var Pt=/[\\t\\r\\n\\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if(\"string\"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(\" \"+i+\" \").replace(Pt,\" \")){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");s=pe.trim(r),i!==s&&pe.attr(n,\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(\" \"+i+\" \").replace(Pt,\" \")){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");s=pe.trim(r),i!==s&&pe.attr(n,\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e;return\"boolean\"==typeof t&&\"string\"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if(\"string\"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&\"boolean\"!==n||(t=z(this),t&&pe._data(this,\"__className__\",t),pe.attr(this,\"class\",t||e===!1?\"\":pe._data(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+z(n)+\" \").replace(Pt,\" \").indexOf(t)>-1)return!0;return!1}}),pe.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\\?/,$t=/(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+\"\");var n,r=null,i=pe.trim(t+\"\");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,\"\")}))?Function(\"return \"+i)():pe.error(\"Invalid JSON: \"+t)},pe.parseXML=function(t){var n,r;if(!t||\"string\"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,\"text/xml\")):(n=new e.ActiveXObject(\"Microsoft.XMLDOM\"),n.async=\"false\",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName(\"parsererror\").length||pe.error(\"Invalid XML: \"+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\\/\\//,Gt=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,Kt={},Qt={},Zt=\"*/\".concat(\"*\"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:\"GET\",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Zt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":pe.parseJSON,\"text xml\":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||\"\",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader(\"Last-Modified\"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader(\"etag\"),w&&(pe.etag[a]=w)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+\"\",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?\"ajaxSuccess\":\"ajaxError\",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger(\"ajaxComplete\",[T,d]),--pe.active||pe.event.trigger(\"ajaxStop\")))}\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks(\"once memory\"),y=d.statusCode||{},v={},x={},b=0,w=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+\"\").replace(zt,\"\").replace(Jt,tn[1]+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||\"*\").toLowerCase().match(De)||[\"\"],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||(\"http:\"===i[1]?\"80\":\"443\"))===(tn[3]||(\"http:\"===tn[1]?\"80\":\"443\")))),d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?\"&\":\"?\")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,\"$1_=\"+Wt++):a+(It.test(a)?\"&\":\"?\")+\"_=\"+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader(\"If-Modified-Since\",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader(\"If-None-Match\",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader(\"Content-Type\",d.contentType),T.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Zt+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w=\"abort\";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger(\"ajaxSend\",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort(\"timeout\")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,\"No Transport\");return T},getJSON:function(e,t,n){return pe.get(e,t,n,\"json\")},getScript:function(e,t){return pe.get(e,void 0,t,\"script\")}}),pe.each([\"get\",\"post\"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,\"body\")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\\[\\]$/,on=/\\r?\\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?\"\":t,r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join(\"&\").replace(nn,\"+\")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,\"elements\");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(\":disabled\")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,\"\\r\\n\")}}):{name:t.name,value:n.replace(on,\"\\r\\n\")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent(\"onunload\",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&\"withCredentials\"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r[\"X-Requested-With\"]||(r[\"X-Requested-With\"]=\"XMLHttpRequest\");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+\"\");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,\"string\"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=\"\"}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\",e.global=!1)}),pe.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n=re.head||pe(\"head\")[0]||re.documentElement;return{send:function(r,i){t=re.createElement(\"script\"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,\"success\"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\\?(?=&|$)|\\?\\?/;pe.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=fn.pop()||pe.expando+\"_\"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&dn.test(t.data)&&\"data\");if(s||\"jsonp\"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,\"$1\"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return a||pe.error(i+\" was not called\"),a[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),\"script\"}),pe.parseHTML=function(e,t,n){if(!e||\"string\"!=typeof e)return null;\"boolean\"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if(\"string\"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&pe.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?pe(\"<div>\").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,\"position\"),f=pe(e),d={};\"static\"===c&&(e.style.position=\"relative\"),s=f.offset(),o=pe.css(e,\"top\"),u=pe.css(e,\"left\"),l=(\"absolute\"===c||\"fixed\"===c)&&pe.inArray(\"auto\",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),\"using\"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?(\"undefined\"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return\"fixed\"===pe.css(r,\"position\")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],\"html\")||(n=e.offset()),n.top+=pe.css(e[0],\"borderTopWidth\",!0),n.left+=pe.css(e[0],\"borderLeftWidth\",!0)),{top:t.top-n.top-pe.css(r,\"marginTop\",!0),left:t.left-n.left-pe.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){\nfor(var e=this.offsetParent;e&&!pe.nodeName(e,\"html\")&&\"static\"===pe.css(e,\"position\");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each([\"top\",\"left\"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+\"px\":n})}),pe.each({Height:\"height\",Width:\"width\"},function(e,t){pe.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||\"boolean\"!=typeof r),a=n||(r===!0||i===!0?\"margin\":\"border\");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement[\"client\"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body[\"scroll\"+e],i[\"scroll\"+e],t.body[\"offset\"+e],i[\"offset\"+e],i[\"client\"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e(\"jquery\",pe)}),pe});!function(e,t){\"use strict\";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if(\"interactive\"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:[\"&#x786E;&#x5B9A;\",\"&#x53D6;&#x6D88;\"],type:[\"dialog\",\"page\",\"iframe\",\"loading\",\"tips\"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName(\"head\")[0],s=document.createElement(\"link\");\"string\"==typeof i&&(n=i);var l=(n||t).replace(/\\.|\\//g,\"\"),f=\"layuicss-\"+l,c=0;s.rel=\"stylesheet\",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),\"function\"==typeof i&&!function u(){return++c>80?e.console&&console.error(\"layer.css: Invalid\"):void(1989===parseInt(o.getStyle(document.getElementById(f),\"width\"))?i():setTimeout(u,100))}()}}},r={v:\"3.1.1\",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||\"ActiveXObject\"in e)&&((t.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,\"string\"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss(\"modules/layer/\"+e.extend):o.link(\"theme/\"+e.extend),this):this},ready:function(e){var t=\"layer\",i=\"\",n=(a?\"modules/layer/\":\"theme/\")+\"default/layer.css?v=\"+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a=\"function\"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s=\"function\"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s=\"function\"==typeof n,f=o.config.skin,c=(f?f+\" \"+f+\"-msg\":\"\")||\"layui-layer-msg\",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+\" layui-layer-hui\",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+\" \"+(n.skin||\"layui-layer-hui\")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=[\"layui-layer\",\".layui-layer-title\",\".layui-layer-main\",\".layui-layer-dialog\",\"layui-layer-iframe\",\"layui-layer-content\",\"layui-layer-btn\",\"layui-layer-close\"];l.anim=[\"layer-anim-00\",\"layer-anim-01\",\"layer-anim-02\",\"layer-anim-03\",\"layer-anim-04\",\"layer-anim-05\",\"layer-anim-06\"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:\"&#x4FE1;&#x606F;\",offset:\"auto\",area:\"auto\",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f=\"object\"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'<div class=\"layui-layer-title\" style=\"'+(f?r.title[1]:\"\")+'\">'+(f?r.title[0]:r.title)+\"</div>\":\"\";return r.zIndex=s,t([r.shade?'<div class=\"layui-layer-shade\" id=\"layui-layer-shade'+a+'\" times=\"'+a+'\" style=\"'+(\"z-index:\"+(s-1)+\"; \")+'\"></div>':\"\",'<div class=\"'+l[0]+(\" layui-layer-\"+o.type[r.type])+(0!=r.type&&2!=r.type||r.shade?\"\":\" layui-layer-border\")+\" \"+(r.skin||\"\")+'\" id=\"'+l[0]+a+'\" type=\"'+o.type[r.type]+'\" times=\"'+a+'\" showtime=\"'+r.time+'\" conType=\"'+(e?\"object\":\"string\")+'\" style=\"z-index: '+s+\"; width:\"+r.area[0]+\";height:\"+r.area[1]+(r.fixed?\"\":\";position:absolute;\")+'\">'+(e&&2!=r.type?\"\":u)+'<div id=\"'+(r.id||\"\")+'\" class=\"layui-layer-content'+(0==r.type&&r.icon!==-1?\" layui-layer-padding\":\"\")+(3==r.type?\" layui-layer-loading\"+r.icon:\"\")+'\">'+(0==r.type&&r.icon!==-1?'<i class=\"layui-layer-ico layui-layer-ico'+r.icon+'\"></i>':\"\")+(1==r.type&&e?\"\":r.content||\"\")+'</div><span class=\"layui-layer-setwin\">'+function(){var e=c?'<a class=\"layui-layer-min\" href=\"javascript:;\"><cite></cite></a><a class=\"layui-layer-ico layui-layer-max\" href=\"javascript:;\"></a>':\"\";return r.closeBtn&&(e+='<a class=\"layui-layer-ico '+l[7]+\" \"+l[7]+(r.title?r.closeBtn:4==r.type?\"1\":\"2\")+'\" href=\"javascript:;\"></a>'),e}()+\"</span>\"+(r.btn?function(){var e=\"\";\"string\"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t<i;t++)e+='<a class=\"'+l[6]+t+'\">'+r.btn[t]+\"</a>\";return'<div class=\"'+l[6]+\" layui-layer-btn-\"+(r.btnAlign||\"\")+'\">'+e+\"</div>\"}():\"\")+(r.resize?'<span class=\"layui-layer-resize\"></span>':\"\")+\"</div>\"],u,i('<div class=\"layui-layer-move\"></div>')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f=\"object\"==typeof s,c=i(\"body\");if(!t.id||!i(\"#\"+t.id)[0]){switch(\"string\"==typeof t.area&&(t.area=\"auto\"===t.area?[\"\",\"\"]:[t.area,\"\"]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn=\"btn\"in t?t.btn:o.btn[0],r.closeAll(\"dialog\");break;case 2:var s=t.content=f?t.content:[t.content||\"\",\"auto\"];t.content='<iframe scrolling=\"'+(t.content[1]||\"auto\")+'\" allowtransparency=\"true\" id=\"'+l[4]+a+'\" name=\"'+l[4]+a+'\" onload=\"this.className=\\'\\';\" class=\"layui-layer-load\" frameborder=\"0\" src=\"'+t.content[0]+'\"></iframe>';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll(\"loading\");break;case 4:f||(t.content=[t.content,\"body\"]),t.follow=t.content[1],t.content=t.content[0]+'<i class=\"layui-layer-TipsG\"></i>',delete t.title,t.tips=\"object\"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll(\"tips\")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i(\"body\").append(n[1])}():function(){s.parents(\".\"+l[0])[0]||(s.data(\"display\",s.css(\"display\")).show().addClass(\"layui-layer-wrap\").wrap(n[1]),i(\"#\"+l[0]+a).find(\".\"+l[5]).before(r))}()}():c.append(n[1]),i(\".layui-layer-move\")[0]||c.append(o.moveElem=u),e.layero=i(\"#\"+l[0]+a),t.scrollbar||l.html.css(\"overflow\",\"hidden\").attr(\"layer-full\",a)}).auto(a),i(\"#layui-layer-shade\"+e.index).css({\"background-color\":t.shade[1]||\"#000\",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find(\"iframe\").attr(\"src\",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on(\"resize\",function(){e.offset(),(/^\\d+%$/.test(t.area[0])||/^\\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u=\"layer-anim \"+l.anim[t.anim];e.layero.addClass(u).one(\"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend\",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data(\"isOutAnim\",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i(\"#\"+l[0]+e);\"\"===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find(\".\"+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css(\"padding-top\"))))};switch(a.type){case 2:u(\"iframe\");break;default:\"\"===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u(\".\"+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u(\".\"+l[5])):u(\".\"+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o=\"object\"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):\"auto\"!==t.offset&&(\"t\"===t.offset?e.offsetTop=0:\"r\"===t.offset?e.offsetLeft=n.width()-a[0]:\"b\"===t.offset?e.offsetTop=n.height()-a[1]:\"l\"===t.offset?e.offsetLeft=0:\"lt\"===t.offset?(e.offsetTop=0,e.offsetLeft=0):\"lb\"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):\"rt\"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):\"rb\"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr(\"minLeft\")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css(\"left\")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i(\"body\"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(\".layui-layer-TipsG\"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:\"auto\"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass(\"layui-layer-TipsB\").addClass(\"layui-layer-TipsT\").css(\"border-right-color\",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass(\"layui-layer-TipsL\").addClass(\"layui-layer-TipsR\").css(\"border-bottom-color\",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass(\"layui-layer-TipsT\").addClass(\"layui-layer-TipsB\").css(\"border-right-color\",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass(\"layui-layer-TipsR\").addClass(\"layui-layer-TipsL\").css(\"border-bottom-color\",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find(\".\"+l[5]).css({\"background-color\":t.tips[1],\"padding-right\":t.closeBtn?\"30px\":\"\"}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(\".layui-layer-resize\"),c={};return t.move&&l.css(\"cursor\",\"move\"),l.on(\"mousedown\",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css(\"left\")),e.clientY-parseFloat(s.css(\"top\"))],o.moveElem.css(\"cursor\",\"move\").show())}),f.on(\"mousedown\",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css(\"cursor\",\"se-resize\").show()}),a.on(\"mousemove\",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l=\"fixed\"===s.css(\"position\");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;a<c.stX&&(a=c.stX),a>f&&(a=f),o<c.stY&&(o=c.stY),o>u&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on(\"mouseup\",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find(\"iframe\").on(\"load\",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find(\".\"+l[6]).children(\"a\").on(\"click\",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a[\"btn\"+(e+1)]&&a[\"btn\"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find(\".\"+l[7]).on(\"click\",e),a.shadeClose&&i(\"#layui-layer-shade\"+t.index).on(\"click\",function(){r.close(t.index)}),n.find(\".layui-layer-min\").on(\"click\",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(\".layui-layer-max\").on(\"click\",function(){i(this).hasClass(\"layui-layer-maxmin\")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i(\"select\"),function(e,t){var n=i(this);n.parents(\".\"+l[0])[0]||1==n.attr(\"layer\")&&i(\".\"+l[0]).length<1&&n.removeAttr(\"layer\").show(),n=null})},s.pt.IE6=function(e){i(\"select\").each(function(e,t){var n=i(this);n.parents(\".\"+l[0])[0]||\"none\"===n.css(\"display\")||n.attr({layer:\"1\"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css(\"z-index\",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on(\"mousedown\",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css(\"margin-left\"))];e.find(\".layui-layer-max\").addClass(\"layui-layer-maxmin\"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr(\"layer-full\")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty(\"overflow\"):l.html[0].style.removeAttribute(\"overflow\"),l.html.removeAttr(\"layer-full\"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i(\".\"+l[4]).attr(\"times\"),i(\"#\"+l[0]+t).find(\"iframe\").contents().find(e)},r.getFrameIndex=function(e){return i(\"#\"+e).parents(\".\"+l[4]).attr(\"times\")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame(\"html\",e).outerHeight(),n=i(\"#\"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find(\".\"+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find(\"iframe\").css({height:t})}},r.iframeSrc=function(e,t){i(\"#\"+l[0]+e).find(\"iframe\").attr(\"src\",t)},r.style=function(e,t,n){var a=i(\"#\"+l[0]+e),r=a.find(\".layui-layer-content\"),s=a.attr(\"type\"),f=a.find(l[1]).outerHeight()||0,c=a.find(\".\"+l[6]).outerHeight()||0;a.attr(\"minLeft\");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find(\".\"+l[6]).outerHeight(),s===o.type[2]?a.find(\"iframe\").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css(\"padding-top\"))-parseFloat(r.css(\"padding-bottom\"))}))},r.min=function(e,t){var a=i(\"#\"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr(\"minLeft\")||181*o.minIndex+\"px\",c=a.css(\"position\");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr(\"position\",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:\"fixed\",overflow:\"hidden\"},!0),a.find(\".layui-layer-min\").hide(),\"page\"===a.attr(\"type\")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr(\"minLeft\")||o.minIndex++,a.attr(\"minLeft\",f)},r.restore=function(e){var t=i(\"#\"+l[0]+e),n=t.attr(\"area\").split(\",\");t.attr(\"type\");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr(\"position\"),overflow:\"visible\"},!0),t.find(\".layui-layer-max\").removeClass(\"layui-layer-maxmin\"),t.find(\".layui-layer-min\").show(),\"page\"===t.attr(\"type\")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i(\"#\"+l[0]+e);o.record(a),l.html.attr(\"layer-full\")||l.html.css(\"overflow\",\"hidden\").attr(\"layer-full\",e),clearTimeout(t),t=setTimeout(function(){var t=\"fixed\"===a.css(\"position\");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(\".layui-layer-min\").hide()},100)},r.title=function(e,t){var n=i(\"#\"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i(\"#\"+l[0]+e),n=t.attr(\"type\"),a=\"layer-anim-close\";if(t[0]){var s=\"layui-layer-wrap\",f=function(){if(n===o.type[1]&&\"object\"===t.attr(\"conType\")){t.children(\":not(.\"+l[5]+\")\").remove();for(var a=t.find(\".\"+s),r=0;r<2;r++)a.unwrap();a.css(\"display\",a.data(\"display\")).removeClass(s)}else{if(n===o.type[2])try{var f=i(\"#\"+l[4]+e)[0];f.contentWindow.document.write(\"\"),f.contentWindow.close(),t.find(\".\"+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML=\"\",t.remove()}\"function\"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data(\"isOutAnim\")&&t.addClass(\"layer-anim \"+a),i(\"#layui-layer-moves, #layui-layer-shade\"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr(\"minLeft\")&&(o.minIndex--,o.minLeft.push(t.attr(\"minLeft\"))),r.ie&&r.ie<10||!t.data(\"isOutAnim\")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i(\".\"+l[0]),function(){var t=i(this),n=e?t.attr(\"type\")===e:1;n&&r.close(t.attr(\"times\")),n=null})};var f=r.cache||{},c=function(e){return f.skin?\" \"+f.skin+\" \"+f.skin+\"-\"+e:\"\"};r.prompt=function(e,t){var a=\"\";if(e=e||{},\"function\"==typeof e&&(t=e),e.area){var o=e.area;a='style=\"width: '+o[0]+\"; height: \"+o[1]+';\"',delete e.area}var s,l=2==e.formType?'<textarea class=\"layui-layer-input\"'+a+\"></textarea>\":function(){return'<input type=\"'+(1==e.formType?\"password\":\"text\")+'\" class=\"layui-layer-input\">'}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:[\"&#x786E;&#x5B9A;\",\"&#x53D6;&#x6D88;\"],content:l,skin:\"layui-layer-prompt\"+c(\"prompt\"),maxWidth:n.width(),success:function(t){s=t.find(\".layui-layer-input\"),s.val(e.value||\"\").focus(),\"function\"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();\"\"===n?s.focus():n.length>(e.maxlength||500)?r.tips(\"&#x6700;&#x591A;&#x8F93;&#x5165;\"+(e.maxlength||500)+\"&#x4E2A;&#x5B57;&#x6570;\",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n=\"layui-this\",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:\"layui-layer-tab\"+c(\"tab\"),resize:!1,title:function(){var e=t.length,i=1,a=\"\";if(e>0)for(a='<span class=\"'+n+'\">'+t[0].title+\"</span>\";i<e;i++)a+=\"<span>\"+t[i].title+\"</span>\";return a}(),content:'<ul class=\"layui-layer-tabmain\">'+function(){var e=t.length,i=1,a=\"\";if(e>0)for(a='<li class=\"layui-layer-tabli '+n+'\">'+(t[0].content||\"no content\")+\"</li>\";i<e;i++)a+='<li class=\"layui-layer-tabli\">'+(t[i].content||\"no  content\")+\"</li>\";return a}()+\"</ul>\",success:function(t){var o=t.find(\".layui-layer-title\").children(),r=t.find(\".layui-layer-tabmain\").children();o.on(\"mousedown\",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),\"function\"==typeof e.change&&e.change(o)}),\"function\"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||\"img\";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg(\"&#x6CA1;&#x6709;&#x56FE;&#x7247;\")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr(\"layer-index\",e),u.push({alt:t.attr(\"alt\"),pid:t.attr(\"layer-pid\"),src:t.attr(\"layer-src\")||t.attr(\"src\"),thumb:t.attr(\"src\")})})};if(h(),0===u.length)return;if(n||p.on(\"click\",t.img,function(){var e=i(this),n=e.attr(\"layer-index\");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(\".layui-layer-imgprev\").on(\"click\",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(\".layui-layer-imgnext\").on(\"click\",function(e){e.preventDefault(),s.imgnext()}),i(document).on(\"keyup\",s.keyup)},s.loadi=r.load(1,{shade:!(\"shade\"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:\"layui-layer-photos\",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]<r[1]&&(a[0]=a[0]/r[1],a[1]=a[1]/r[1])}return[a[0]+\"px\",a[1]+\"px\"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:\".layui-layer-phimg img\",moveType:1,scrollbar:!1,moveOut:!0,isOutAnim:!1,skin:\"layui-layer-photos\"+c(\"photos\"),content:'<div class=\"layui-layer-phimg\"><img src=\"'+u[d].src+'\" alt=\"'+(u[d].alt||\"\")+'\" layer-pid=\"'+u[d].pid+'\"><div class=\"layui-layer-imgsee\">'+(u.length>1?'<span class=\"layui-layer-imguide\"><a href=\"javascript:;\" class=\"layui-layer-iconext layui-layer-imgprev\"></a><a href=\"javascript:;\" class=\"layui-layer-iconext layui-layer-imgnext\"></a></span>':\"\")+'<div class=\"layui-layer-imgbar\" style=\"display:'+(a?\"block\":\"\")+'\"><span class=\"layui-layer-imgtit\"><a href=\"javascript:;\">'+(u[d].alt||\"\")+\"</a><em>\"+s.imgIndex+\"/\"+u.length+\"</em></span></div></div></div>\",success:function(e,i){s.bigimg=e.find(\".layui-layer-phimg\"),s.imgsee=e.find(\".layui-layer-imguide,.layui-layer-imgbar\"),s.event(e),t.tab&&t.tab(u[d],e),\"function\"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off(\"keyup\",s.keyup)}},t))},function(){r.close(s.loadi),r.msg(\"&#x5F53;&#x524D;&#x56FE;&#x7247;&#x5730;&#x5740;&#x5F02;&#x5E38;<br>&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x67E5;&#x770B;&#x4E0B;&#x4E00;&#x5F20;&#xFF1F;\",{time:3e4,btn:[\"&#x4E0B;&#x4E00;&#x5F20;\",\"&#x4E0D;&#x770B;&#x4E86;\"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i(\"html\"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define(\"jquery\",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t(\"layer\",r)})):\"function\"==typeof define&&define.amd?define([\"jquery\"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);layui.define(\"jquery\",function(t){\"use strict\";var a=layui.$,i=(layui.hint(),layui.device()),e=\"element\",l=\"layui-this\",n=\"layui-show\",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.children(\".layui-tab-bar\"),o=l.children(\".layui-tab-content\"),r='<li lay-id=\"'+(i.id||\"\")+'\"'+(i.attr?' lay-attr=\"'+i.attr+'\"':\"\")+\">\"+(i.title||\"unnaming\")+\"</li>\";return s[0]?s.before(r):n.append(r),o.append('<div class=\"layui-tab-item\">'+(i.content||\"\")+\"</div>\"),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.find('>li[lay-id=\"'+i+'\"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.find('>li[lay-id=\"'+i+'\"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on(\"click\",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e=\"layui-progress\",l=a(\".\"+e+\"[lay-filter=\"+t+\"]\"),n=l.find(\".\"+e+\"-bar\"),s=n.find(\".\"+e+\"-text\");return n.css(\"width\",i),s.text(i),this};var o=\".layui-nav\",r=\"layui-nav-item\",c=\"layui-nav-bar\",u=\"layui-nav-tree\",d=\"layui-nav-child\",y=\"layui-nav-more\",h=\"layui-anim layui-anim-upbit\",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children(\"li\").index(r),c=o.headerElem?r.parent():r.parents(\".layui-tab\").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(\".layui-tab-content\").children(\".layui-tab-item\"),d=r.find(\"a\"),y=c.attr(\"lay-filter\");\"javascript:;\"!==d.attr(\"href\")&&\"_blank\"===d.attr(\"target\")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,\"tab(\"+y+\")\",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(\".layui-tab\").eq(0),r=o.children(\".layui-tab-content\").children(\".layui-tab-item\"),c=o.attr(\"lay-filter\");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,\"tabDelete(\"+c+\")\",{elem:o,index:s})},tabAuto:function(){var t=\"layui-tab-more\",e=\"layui-tab-bar\",l=\"layui-tab-close\",n=this;a(\".layui-tab\").each(function(){var s=a(this),o=s.children(\".layui-tab-title\"),r=(s.children(\".layui-tab-content\").children(\".layui-tab-item\"),'lay-stope=\"tabmore\"'),c=a('<span class=\"layui-unselect layui-tab-bar\" '+r+\"><i \"+r+' class=\"layui-icon\">&#xe61a;</i></span>');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr(\"lay-allowClose\")&&o.find(\"li\").each(function(){var t=a(this);if(!t.find(\".\"+l)[0]){var i=a('<i class=\"layui-icon layui-unselect '+l+'\">&#x1006;</i>');i.on(\"click\",f.tabDelete),t.append(i)}}),\"string\"!=typeof s.attr(\"lay-unauto\"))if(o.prop(\"scrollWidth\")>o.outerWidth()+1){if(o.find(\".\"+e)[0])return;o.append(c),s.attr(\"overflow\",\"\"),c.on(\"click\",function(a){o[this.title?\"removeClass\":\"addClass\"](t),this.title=this.title?\"\":\"收缩\"})}else o.find(\".\"+e).remove(),s.removeAttr(\"overflow\")})},hideTabMore:function(t){var i=a(\".layui-tab-title\");t!==!0&&\"tabmore\"===a(t.target).attr(\"lay-stope\")||(i.removeClass(\"layui-tab-more\"),i.find(\".layui-tab-bar\").attr(\"title\",\"\"))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr(\"lay-filter\"),s=t.parent(),c=t.siblings(\".\"+d),y=\"string\"==typeof s.attr(\"lay-unselect\");\"javascript:;\"!==t.attr(\"href\")&&\"_blank\"===t.attr(\"target\")||y||c[0]||(i.find(\".\"+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s[\"none\"===c.css(\"display\")?\"addClass\":\"removeClass\"](r+\"ed\"),\"all\"===i.attr(\"lay-shrink\")&&s.siblings().removeClass(r+\"ed\"))),layui.event.call(this,e,\"nav(\"+n+\")\",t)},collapse:function(){var t=a(this),i=t.find(\".layui-colla-icon\"),l=t.siblings(\".layui-colla-content\"),s=t.parents(\".layui-collapse\").eq(0),o=s.attr(\"lay-filter\"),r=\"none\"===l.css(\"display\");if(\"string\"==typeof s.attr(\"lay-accordion\")){var c=s.children(\".layui-colla-item\").children(\".\"+n);c.siblings(\".layui-colla-title\").children(\".layui-colla-icon\").html(\"&#xe602;\"),c.removeClass(n)}l[r?\"addClass\":\"removeClass\"](n),i.html(r?\"&#xe61a;\":\"&#xe602;\"),layui.event.call(this,e,\"collapse(\"+o+\")\",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter=\"'+e+'\"]':\"\"}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find(\".\"+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children(\"a\").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css(\"marginLeft\")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),\"block\"===f.css(\"display\")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find(\".\"+y).addClass(y+\"d\")},300))};a(o+l).each(function(i){var l=a(this),o=a('<span class=\"'+c+'\"></span>'),h=l.find(\".\"+r);l.find(\".\"+c)[0]||(l.append(o),h.on(\"mouseenter\",function(){b.call(this,o,l,i)}).on(\"mouseleave\",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find(\".\"+d).removeClass(n),l.find(\".\"+y).removeClass(y+\"d\")},300))}),l.on(\"mouseleave\",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find(\"a\").each(function(){var t=a(this),i=(t.parent(),t.siblings(\".\"+d));i[0]&&!t.children(\".\"+y)[0]&&t.append('<span class=\"'+y+'\"></span>'),t.off(\"click\",f.clickThis).on(\"click\",f.clickThis)})})},breadcrumb:function(){var t=\".layui-breadcrumb\";a(t+l).each(function(){var t=a(this),i=\"lay-separator\",e=t.attr(i)||\"/\",l=t.find(\"a\");l.next(\"span[\"+i+\"]\")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(\"<span \"+i+\">\"+e+\"</span>\")}),t.css(\"visibility\",\"visible\"))})},progress:function(){var t=\"layui-progress\";a(\".\"+t+l).each(function(){var i=a(this),e=i.find(\".layui-progress-bar\"),l=e.attr(\"lay-percent\");e.css(\"width\",function(){return/^.+\\/.+$/.test(l)?100*new Function(\"return \"+l)()+\"%\":l}()),i.attr(\"lay-showPercent\")&&setTimeout(function(){e.html('<span class=\"'+t+'-text\">'+l+\"</span>\")},350)})},collapse:function(){var t=\"layui-collapse\";a(\".\"+t+l).each(function(){var t=a(this).find(\".layui-colla-item\");t.each(function(){var t=a(this),i=t.find(\".layui-colla-title\"),e=t.find(\".layui-colla-content\"),l=\"none\"===e.css(\"display\");i.find(\".layui-colla-icon\").remove(),i.append('<i class=\"layui-icon layui-colla-icon\">'+(l?\"&#xe602;\":\"&#xe61a;\")+\"</i>\"),i.off(\"click\",f.collapse).on(\"click\",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=\".layui-tab-title li\";b.on(\"click\",v,f.tabClick),b.on(\"click\",f.hideTabMore),a(window).on(\"resize\",f.tabAuto),t(e,p)});layui.define(\"layer\",function(e){\"use strict\";var i=layui.$,t=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,r,e,i)}},l=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},r=\"upload\",u=\"layui-upload-file\",c=\"layui-upload-form\",f=\"layui-upload-iframe\",s=\"layui-upload-choose\",p=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};p.prototype.config={accept:\"images\",exts:\"\",auto:!0,bindAction:\"\",url:\"\",field:\"file\",method:\"post\",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},p.prototype.file=function(){var e=this,t=e.config,n=e.elemFile=i(['<input class=\"'+u+'\" type=\"file\" accept=\"'+t.acceptMime+'\" name=\"'+t.field+'\"',t.multiple?\" multiple\":\"\",\">\"].join(\"\")),o=t.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&t.elem.wrap('<div class=\"layui-upload-wrap\"></div>'),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,t=e.config,n=i('<iframe id=\"'+f+'\" class=\"'+f+'\" name=\"'+f+'\" frameborder=\"0\"></iframe>'),a=i(['<form target=\"'+f+'\" class=\"'+c+'\" method=\"post\" key=\"set-mine\" enctype=\"multipart/form-data\" action=\"'+t.url+'\">',\"</form>\"].join(\"\"));i(\"#\"+f)[0]||i(\"body\").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(a),t.elem.next(\".\"+c).append(function(){var e=[];return layui.each(t.data,function(i,t){t=\"function\"==typeof t?t():t,e.push('<input type=\"hidden\" name=\"'+i+'\" value=\"'+t+'\">')}),e.join(\"\")}()))},p.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return\"input\"===e.tagName.toLocaleLowerCase()&&\"file\"===e.type},p.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},p.prototype.upload=function(e,t){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var t=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&t+n===o.fileLength&&\"function\"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:t,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,i){i=\"function\"==typeof i?i():i,r.append(e,i)}),i.ajax({url:l.url,type:\"post\",data:r,contentType:!1,processData:!1,dataType:\"json\",headers:l.headers||{},success:function(i){t++,d(e,i),u()},error:function(){n++,o.msg(\"请求上传接口出现异常\"),m(e),u()}})})},c=function(){var e=i(\"#\"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var i,t=e.contents().find(\"body\");try{i=t.text()}catch(n){o.msg(\"获取上传后的响应信息出现异常\"),clearInterval(p.timer),m()}i&&(clearInterval(p.timer),t.html(\"\"),d(0,i))},30)},d=function(e,i){if(o.elemFile.next(\".\"+s).remove(),r.value=\"\",\"object\"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},o.msg(\"请对上传接口返回有效JSON\")}\"function\"==typeof l.done&&l.done(i,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=\"\"),\"function\"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var i=[];return layui.each(e||o.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){o.preview(e)},upload:function(e,i){var t={};t[e]=i,o.upload(t)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,i){o.files[e]=i}),o.files},resetFile:function(e,i,t){var n=new File([i],t);o.files=o.files||{},o.files[e]=n}},y=function(){if(\"choose\"!==t&&!l.auto||(l.choose&&l.choose(g),\"choose\"!==t))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\\/\\\\]+\\..+/g)||[]||\"\":v,0!==v.length){switch(l.accept){case\"file\":if(h&&!RegExp(\"\\\\w\\\\.(\"+h+\")$\",\"i\").test(escape(v)))return o.msg(\"选择的文件中包含不支持的格式\"),r.value=\"\";break;case\"video\":if(!RegExp(\"\\\\w\\\\.(\"+(h||\"avi|mp4|wma|rmvb|rm|flash|3gp|flv\")+\")$\",\"i\").test(escape(v)))return o.msg(\"选择的视频中包含不支持的格式\"),r.value=\"\";break;case\"audio\":if(!RegExp(\"\\\\w\\\\.(\"+(h||\"mp3|wav|mid\")+\")$\",\"i\").test(escape(v)))return o.msg(\"选择的音频中包含不支持的格式\"),r.value=\"\";break;default:if(layui.each(v,function(e,i){RegExp(\"\\\\w\\\\.(\"+(h||\"jpg|png|gif|bmp|jpeg$\")+\")\",\"i\").test(escape(i))||(n=!0)}),n)return o.msg(\"选择的图片中包含不支持的格式\"),r.value=\"\"}if(o.fileLength=function(){var i=0,t=e||o.files||o.chooseFiles||r.files;return layui.each(t,function(){i++}),i}(),l.number&&o.fileLength>l.number)return o.msg(\"同时最多只能上传的数量为：\"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;t=t>=1?t.toFixed(2)+\"MB\":l.size+\"KB\",r.value=\"\",F=t}}),F)return o.msg(\"文件不能超过\"+F)}y()}},p.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+\"-\"+i]=t})},l=function(i,n){var a=e.elemFile,o=i.length>1?i.length+\"个文件\":(i[0]||{}).name||a[0].value.match(/[^\\/\\\\]+\\..+/g)||[]||\"\";a.next().hasClass(s)&&a.next().remove(),e.upload(null,\"choose\"),e.isFile()||t.choose||a.after('<span class=\"layui-inline '+s+'\">'+o+\"</span>\")};t.elem.off(\"upload.start\").on(\"upload.start\",function(){var a=i(this),o=a.attr(\"lay-data\");if(o)try{o=new Function(\"return \"+o)(),e.config=i.extend({},t,o)}catch(l){n.error(\"Upload element property lay-data configuration item has a syntax error: \"+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||t.elem.off(\"upload.over\").on(\"upload.over\",function(){var e=i(this);e.attr(\"lay-over\",\"\")}).off(\"upload.leave\").on(\"upload.leave\",function(){var e=i(this);e.removeAttr(\"lay-over\")}).off(\"upload.drop\").on(\"upload.drop\",function(n,a){var r=i(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr(\"lay-over\"),o(u),t.auto?e.upload(u):l(u)}),e.elemFile.off(\"upload.change\").on(\"upload.change\",function(){var i=this.files||[];o(i),t.auto?e.upload():l(i)}),t.bindAction.off(\"upload.action\").on(\"upload.action\",function(){e.upload()}),t.elem.data(\"haveEvents\")||(e.elemFile.on(\"change\",function(){i(this).trigger(\"upload.change\")}),t.elem.on(\"click\",function(){e.isFile()||i(this).trigger(\"upload.start\")}),t.drag&&t.elem.on(\"dragover\",function(e){e.preventDefault(),i(this).trigger(\"upload.over\")}).on(\"dragleave\",function(e){i(this).trigger(\"upload.leave\")}).on(\"drop\",function(e){e.preventDefault(),i(this).trigger(\"upload.drop\",e)}),t.bindAction.on(\"click\",function(){i(this).trigger(\"upload.action\")}),t.elem.data(\"haveEvents\",!0))},o.render=function(e){var i=new p(e);return l.call(i)},e(r,o)});layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide(\"set\",i,t||0)},config:i}},n=\"slider\",l=\"layui-disabled\",s=\"layui-slider\",r=\"layui-slider-bar\",o=\"layui-slider-wrap\",u=\"layui-slider-wrap-btn\",d=\"layui-slider-tips\",v=\"layui-slider-input\",c=\"layui-slider-input-txt\",m=\"layui-slider-input-btn\",p=\"layui-slider-hover\",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:\"default\",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:\"#009688\"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.max<t.min&&(t.max=t.min+t.step),t.range){t.value=\"object\"==typeof t.value?t.value:[t.min,t.value];var a=Math.min(t.value[0],t.value[1]),n=Math.max(t.value[0],t.value[1]);t.value[0]=a>t.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+\"%\";r+=\"%\",v+=\"%\"}else{\"object\"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.value<t.min&&(t.value=t.min),t.value>t.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+\"%\"}var p=t.disabled?\"#c2c2c2\":t.theme,f='<div class=\"layui-slider '+(\"vertical\"===t.type?\"layui-slider-vertical\":\"\")+'\">'+(t.tips?'<div class=\"layui-slider-tips\"></div>':\"\")+'<div class=\"layui-slider-bar\" style=\"background:'+p+\"; \"+(\"vertical\"===t.type?\"height\":\"width\")+\":\"+m+\";\"+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+(r||0)+';\"></div><div class=\"layui-slider-wrap\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+(r||m)+';\"><div class=\"layui-slider-wrap-btn\" style=\"border: 2px solid '+p+';\"></div></div>'+(t.range?'<div class=\"layui-slider-wrap\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+v+';\"><div class=\"layui-slider-wrap-btn\" style=\"border: 2px solid '+p+';\"></div></div>':\"\")+\"</div>\",h=i(t.elem),y=h.next(\".\"+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find(\".\"+o).eq(0).data(\"value\",t.value[0]),e.elemTemp.find(\".\"+o).eq(1).data(\"value\",t.value[1])):e.elemTemp.find(\".\"+o).data(\"value\",t.value),h.html(e.elemTemp),\"vertical\"===t.type&&e.elemTemp.height(t.height+\"px\"),t.showstep){for(var g=(t.max-t.min)/t.step,b=\"\",x=1;x<g+1;x++){var T=100*x/g;T<100&&(b+='<div class=\"layui-slider-step\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+T+'%\"></div>')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('<div class=\"layui-slider-input layui-input\"><div class=\"layui-slider-input-txt\"><input type=\"text\" class=\"layui-input\"></div><div class=\"layui-slider-input-btn\"><i class=\"layui-icon layui-icon-up\"></i><i class=\"layui-icon layui-icon-down\"></i></div></div>');h.css(\"position\",\"relative\"),h.append(w),h.find(\".\"+c).children(\"input\").val(t.value),\"vertical\"===t.type?w.css({left:0,top:-48}):e.elemTemp.css(\"margin-right\",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find(\".\"+u).addClass(l)):e.slide(),e.elemTemp.find(\".\"+u).on(\"mouseover\",function(){var a=\"vertical\"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find(\".\"+o),l=\"vertical\"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data(\"value\"),u=t.setTips?t.setTips(r):r;e.elemTemp.find(\".\"+d).html(u),\"vertical\"===t.type?e.elemTemp.find(\".\"+d).css({bottom:s+\"%\",\"margin-bottom\":\"20px\",display:\"inline-block\"}):e.elemTemp.find(\".\"+d).css({left:s+\"%\",display:\"inline-block\"})}).on(\"mouseout\",function(){e.elemTemp.find(\".\"+d).css(\"display\",\"none\")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return\"vertical\"===l.type?l.height:s[0].offsetWidth},h=s.find(\".\"+o),y=s.next(\".\"+v),g=y.children(\".\"+c).children(\"input\").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css(\"vertical\"===l.type?\"bottom\":\"left\",e+\"%\");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;\"vertical\"===l.type?(s.find(\".\"+d).css({bottom:e+\"%\",\"margin-bottom\":\"20px\"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find(\".\"+d).css(\"left\",e+\"%\"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);\"vertical\"===l.type?s.find(\".\"+r).css({height:o+\"%\",bottom:n+\"%\"}):s.find(\".\"+r).css({width:o+\"%\",left:n+\"%\"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children(\".\"+c).children(\"input\").val(g),h.eq(i).data(\"value\",u),u=l.setTips?l.setTips(u):u,s.find(\".\"+d).html(u),l.range){var v=[h.eq(0).data(\"value\"),h.eq(1).data(\"value\")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['<div class=\"layui-auxiliar-moving\" id=\"LAY-slider-moving\"></div'].join(\"\")),M=function(e,t){var a=function(){t&&t(),w.remove()};i(\"#LAY-slider-moving\")[0]||i(\"body\").append(w),w.on(\"mousemove\",e),w.on(\"mouseup\",a).on(\"mouseleave\",a)};if(\"set\"===e)return x(t,a);s.find(\".\"+u).each(function(e){var t=i(this);t.on(\"mousedown\",function(i){i=i||window.event;var a=t.parent()[0].offsetLeft,n=i.clientX;\"vertical\"===l.type&&(a=f()-t.parent()[0].offsetTop-h.height(),n=i.clientY);var r=function(i){i=i||window.event;var r=a+(\"vertical\"===l.type?n-i.clientY:i.clientX-n);r<0&&(r=0),r>f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find(\".\"+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find(\".\"+d).hide()};M(r,o)})}),s.on(\"click\",function(e){var t=i(\".\"+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n=\"vertical\"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?\"vertical\"===l.type?Math.abs(n-parseInt(i(h[0]).css(\"bottom\")))>Math.abs(n-parseInt(i(h[1]).css(\"bottom\")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children(\".\"+m).fadeIn(\"fast\")},function(){var e=i(this);e.children(\".\"+m).fadeOut(\"fast\")}),y.children(\".\"+m).children(\"i\").each(function(e){i(this).on(\"click\",function(){g=1==e?g-l.step<l.min?l.min:Number(g)-l.step:Number(g)+l.step>l.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=e<l.min?l.min:e,e=e>l.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children(\".\"+c).children(\"input\").on(\"keydown\",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on(\"change\",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,\"colorpicker\",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t=\"colorpicker\",n=\"layui-show\",l=\"layui-colorpicker\",c=\".layui-colorpicker-main\",a=\"layui-icon-down\",s=\"layui-icon-close\",f=\"layui-colorpicker-trigger-span\",d=\"layui-colorpicker-trigger-i\",u=\"layui-colorpicker-side\",p=\"layui-colorpicker-side-slider\",g=\"layui-colorpicker-basis\",v=\"layui-colorpicker-alpha-bgcolor\",h=\"layui-colorpicker-alpha-slider\",m=\"layui-colorpicker-basis-cursor\",b=\"layui-colorpicker-main-input\",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf(\"#\")>-1?e.substring(1):e;if(3==e.length){var i=e.split(\"\");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]=\"0\"+i)}),r.join(\"\")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:\"\",size:null,alpha:!1,format:\"hex\",predefine:!1,colors:[\"#009688\",\"#5FB878\",\"#1E9FFF\",\"#FF5722\",\"#FFB800\",\"#01AAED\",\"#999\",\"#c00\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"rgb(0, 186, 189)\",\"rgb(255, 120, 0)\",\"rgb(250, 212, 0)\",\"#393D49\",\"rgba(0,0,0,.5)\",\"rgba(255, 69, 0, 0.68)\",\"rgba(144, 240, 144, 0.5)\",\"rgba(31, 147, 255, 0.73)\"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['<div class=\"layui-unselect layui-colorpicker\">',\"<span \"+(\"rgb\"==o.format&&o.alpha?'class=\"layui-colorpicker-trigger-bgcolor\"':\"\")+\">\",'<span class=\"layui-colorpicker-trigger-span\" ','lay-type=\"'+(\"rgb\"==o.format?o.alpha?\"rgba\":\"torgb\":\"\")+'\" ','style=\"'+function(){var e=\"\";return o.color?(e=o.color,(o.color.match(/[0-9]{1,3}/g)||[]).length>3&&(o.alpha&&\"rgb\"==o.format||(e=\"#\"+C(k(P(o.color))))),\"background: \"+e):e}()+'\">','<i class=\"layui-icon layui-colorpicker-trigger-i '+(o.color?a:s)+'\"></i>',\"</span>\",\"</span>\",\"</div>\"].join(\"\")),t=i(o.elem);o.size&&r.addClass(\"layui-colorpicker-\"+o.size),t.addClass(\"layui-inline\").html(e.elemColorBox=r),e.color=e.elemColorBox.find(\".\"+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['<div id=\"layui-colorpicker'+e.index+'\" data-index=\"'+e.index+'\" class=\"layui-anim layui-anim-upbit layui-colorpicker-main\">','<div class=\"layui-colorpicker-main-wrapper\">','<div class=\"layui-colorpicker-basis\">','<div class=\"layui-colorpicker-basis-white\"></div>','<div class=\"layui-colorpicker-basis-black\"></div>','<div class=\"layui-colorpicker-basis-cursor\"></div>',\"</div>\",'<div class=\"layui-colorpicker-side\">','<div class=\"layui-colorpicker-side-slider\"></div>',\"</div>\",\"</div>\",'<div class=\"layui-colorpicker-main-alpha '+(o.alpha?n:\"\")+'\">','<div class=\"layui-colorpicker-alpha-bgcolor\">','<div class=\"layui-colorpicker-alpha-slider\"></div>',\"</div>\",\"</div>\",function(){if(o.predefine){var e=['<div class=\"layui-colorpicker-main-pre\">'];return layui.each(o.colors,function(i,o){e.push(['<div class=\"layui-colorpicker-pre'+((o.match(/[0-9]{1,3}/g)||[]).length>3?\" layui-colorpicker-pre-isalpha\":\"\")+'\">','<div style=\"background:'+o+'\"></div>',\"</div>\"].join(\"\"))}),e.push(\"</div>\"),e.join(\"\")}return\"\"}(),'<div class=\"layui-colorpicker-main-input\">','<div class=\"layui-inline\">','<input type=\"text\" class=\"layui-input\">',\"</div>\",'<div class=\"layui-btn-container\">','<button class=\"layui-btn layui-btn-primary layui-btn-sm\" colorpicker-events=\"clear\">清空</button>','<button class=\"layui-btn layui-btn-sm\" colorpicker-events=\"confirm\">确定</button>',\"</div\",\"</div>\",\"</div>\"].join(\"\"));e.elemColorBox.find(\".\"+f)[0];i(c)[0]&&i(c).data(\"index\")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i(\"body\").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i(\"#layui-colorpicker\"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?\"scrollLeft\":\"scrollTop\",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?\"clientWidth\":\"clientHeight\"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a(\"width\")?f=a(\"width\")-n-s:f<s&&(f=s),d+l+s>a()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+(\"fixed\"===i.position?0:c(1))+\"px\",r.style.top=d+(\"fixed\"===i.position?0:c())+\"px\"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find(\".\"+f)),o=e.elemPicker.find(\".\"+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr(\"lay-type\");if(e.select(n.h,n.s,n.b),\"torgb\"===l&&o.find(\"input\").val(t),\"rgba\"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find(\"input\").val(\"rgba(\"+c.r+\", \"+c.g+\", \"+c.b+\", 1)\"),e.elemPicker.find(\".\"+h).css(\"left\",280);else{o.find(\"input\").val(t);var a=280*t.slice(t.lastIndexOf(\",\")+1,t.length-1);e.elemPicker.find(\".\"+h).css(\"left\",a)}e.elemPicker.find(\".\"+v)[0].style.background=\"linear-gradient(to right, rgba(\"+c.r+\", \"+c.g+\", \"+c.b+\", 0), rgb(\"+c.r+\", \"+c.g+\", \"+c.b+\"))\"}}else e.select(0,100,100),o.find(\"input\").val(\"\"),e.elemPicker.find(\".\"+v)[0].style.background=\"\",e.elemPicker.find(\".\"+h).css(\"left\",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f),t=r.attr(\"lay-type\"),n=e.elemPicker.find(\".\"+u),l=e.elemPicker.find(\".\"+p),c=e.elemPicker.find(\".\"+g),y=e.elemPicker.find(\".\"+m),C=e.elemPicker.find(\".\"+v),w=e.elemPicker.find(\".\"+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find(\".\"+d),F=e.elemPicker.find(\".layui-colorpicker-pre\").children(\"div\"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background=\"rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\")\",\"torgb\"===t&&e.elemPicker.find(\".\"+b).find(\"input\").val(\"rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\")\"),\"rgba\"===t){var d=0;d=280*c,w.css(\"left\",d),e.elemPicker.find(\".\"+b).find(\"input\").val(\"rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", \"+c+\")\"),r[0].style.background=\"rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", \"+c+\")\",C[0].style.background=\"linear-gradient(to right, rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", 0), rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\"))\"}o.change&&o.change(e.elemPicker.find(\".\"+b).find(\"input\").val())},M=i(['<div class=\"layui-auxiliar-moving\" id=\"LAY-colorpicker-moving\"></div'].join(\"\")),Y=function(e){i(\"#LAY-colorpicker-moving\")[0]||i(\"body\").append(M),M.on(\"mousemove\",e),M.on(\"mouseup\",function(){M.remove()}).on(\"mouseleave\",function(){M.remove()})};l.on(\"mousedown\",function(e){var i=this.offsetTop,o=e.clientY,r=function(e){var r=i+(e.clientY-o),t=n[0].offsetHeight;r<0&&(r=0),r>t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on(\"click\",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on(\"mousedown\",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on(\"mousedown\",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,\"mousedown\")}),w.on(\"mousedown\",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on(\"click\",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on(\"click\",function(){i(this).parent(\".layui-colorpicker-pre\").addClass(\"selected\").siblings().removeClass(\"selected\");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(\",\")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find(\".\"+p).css(\"top\",c),t.elemPicker.find(\".\"+g)[0].style.background=\"#\"+n,t.elemPicker.find(\".\"+m).css({top:a,left:s}),\"change\"!==r&&t.elemPicker.find(\".\"+b).find(\"input\").val(\"#\"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f),t=e.elemPicker.find(\".\"+b+\" input\"),n={clear:function(i){r[0].style.background=\"\",e.elemColorBox.find(\".\"+d).removeClass(a).addClass(s),e.color=\"\",o.done&&o.done(\"\"),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(\",\")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c=\"#\"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&\"rgba\"===r.attr(\"lay-type\")){var u=280*l.slice(l.lastIndexOf(\",\")+1,l.length-1);e.elemPicker.find(\".\"+h).css(\"left\",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c=\"#\"+C(f),e.elemColorBox.find(\".\"+d).removeClass(s).addClass(a);return\"change\"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on(\"click\",\"*[colorpicker-events]\",function(){var e=i(this),o=e.attr(\"colorpicker-events\");n[o]&&n[o].call(this,e)}),t.on(\"keyup\",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:\"change\")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f);e.elemColorBox.on(\"click\",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on(\"click\",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents(\".\"+l)[0]&&!i(o.target).hasClass(c.replace(/\\./g,\"\"))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find(\".\"+d).removeClass(a).addClass(s);r[0].style.background=e.color||\"\",e.removePicker()}}),B.on(\"resize\",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});layui.define(\"layer\",function(e){\"use strict\";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l=\"form\",r=\".layui-form\",s=\"layui-this\",o=\"layui-hide\",c=\"layui-disabled\",u=function(){this.config={verify:{required:[/[\\S]+/,\"必填项不能为空\"],phone:[/^1\\d{10}$/,\"请输入正确的手机号\"],email:[/^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/,\"邮箱格式不正确\"],url:[/(^#)|(^http(s*):\\/\\/[^\\s]+\\.[^\\s]+)/,\"链接格式不正确\"],number:function(e){if(!e||isNaN(e))return\"只能填写数字\"},date:[/^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/,\"日期格式不正确\"],identity:[/(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/,\"请输入正确的身份证号\"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=t(r+'[lay-filter=\"'+e+'\"]');a.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name=\"'+e+'\"]');a[0]&&(i=a[0].type,\"checkbox\"===i?a[0].checked=t:\"radio\"===i?a.each(function(){this.value===t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e)},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter=\"'+i+'\"]':\"\"}()),d={select:function(){var e,i=\"请选择\",a=\"layui-form-select\",n=\"layui-select-title\",r=\"layui-select-none\",d=\"\",f=u.find(\"select\"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t(\".\"+a).removeClass(a+\"ed \"+a+\"up\"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find(\".\"+n),k=m.find(\"input\"),x=i.find(\"dl\"),g=x.children(\"dd\"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=x.outerHeight();b=p[0].selectedIndex,i.addClass(a+\"ed\"),g.removeClass(o),y=null,g.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+\"up\"),$()},w=function(e){i.removeClass(a+\"ed \"+a+\"up\"),k.blur(),y=null,e||T(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr(\"placeholder\")&&(d=\"\"),k.val(d||\"\"))})},$=function(){var e=x.children(\"dd.\"+s);if(e[0]){var t=e.position().top,i=x.height(),a=e.height();t>i&&x.scrollTop(t+x.scrollTop()-i+a-5),t<0&&x.scrollTop(t+x.scrollTop()-5)}};m.on(\"click\",function(e){i.hasClass(a+\"ed\")?w():(v(e,!0),C()),x.find(\".\"+r).remove()}),m.find(\".layui-edge\").on(\"click\",function(){k.focus()}),k.on(\"keyup\",function(e){var t=e.keyCode;9===t&&C()}).on(\"keydown\",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=x.children(\"dd.\"+s);if(x.children(\"dd.\"+o)[0]&&\"next\"===t){var i=x.children(\"dd:not(.\"+o+\",.\"+c+\")\"),n=i.eq(0).index();if(n>=0&&n<e.index()&&!i.hasClass(s))return i.eq(0).prev()[0]?i.eq(0).prev():x.children(\":last\")}return a&&a[0]?a:y&&y[0]?y:e}();return l=r[t](),n=r[t](\"dd:not(.\"+o+\")\"),l[0]?(y=r[t](),n[0]&&!n.hasClass(c)||!y[0]?(n.addClass(s).siblings().removeClass(s),void $()):i(t,y)):y=null};38===t&&i(\"prev\"),40===t&&i(\"next\"),13===t&&(e.preventDefault(),x.children(\"dd.\"+s).trigger(\"click\"))});var T=function(e,i,a){var n=0;layui.each(g,function(){var i=t(this),l=i.text(),r=l.indexOf(e)===-1;(\"\"===e||\"blur\"===a?e!==l:r)&&n++,\"keyup\"===a&&i[r?\"addClass\":\"removeClass\"](o)});var l=n===g.length;return i(l),l},j=function(e){var t=this.value,i=e.keyCode;return 9!==i&&13!==i&&37!==i&&38!==i&&39!==i&&40!==i&&(T(t,function(e){e?x.find(\".\"+r)[0]||x.append('<p class=\"'+r+'\">无匹配项</p>'):x.find(\".\"+r).remove()},\"keyup\"),\"\"===t&&x.find(\".\"+r).remove(),void $())};f&&k.on(\"keyup\",j).on(\"blur\",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr(\"placeholder\")&&(d=\"\"),setTimeout(function(){T(k.val(),function(e){d||k.val(\"\")},\"blur\")},200)}),g.on(\"click\",function(){var e=t(this),a=e.attr(\"lay-value\"),n=p.attr(\"lay-filter\");return!e.hasClass(c)&&(e.hasClass(\"layui-select-tips\")?k.val(\"\"):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass(\"layui-form-danger\"),layui.event.call(this,l,\"select(\"+n+\")\",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find(\"dl>dt\").on(\"click\",function(e){return!1}),t(document).off(\"click\",v).on(\"click\",v)}};f.each(function(e,l){var r=t(this),o=r.next(\".\"+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if(\"string\"==typeof r.attr(\"lay-ignore\"))return r.show();var h=\"string\"==typeof r.attr(\"lay-search\"),p=v?v.value?i:v.innerHTML||i:i,m=t(['<div class=\"'+(h?\"\":\"layui-unselect \")+a,(u?\" layui-select-disabled\":\"\")+'\">','<div class=\"'+n+'\">','<input type=\"text\" placeholder=\"'+p+'\" '+('value=\"'+(d?f.html():\"\")+'\"')+(h?\"\":\" readonly\")+' class=\"layui-input'+(h?\"\":\" layui-unselect\")+(u?\" \"+c:\"\")+'\">','<i class=\"layui-edge\"></i></div>','<dl class=\"layui-anim layui-anim-upbit'+(r.find(\"optgroup\")[0]?\" layui-select-group\":\"\")+'\">',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?\"optgroup\"===a.tagName.toLowerCase()?t.push(\"<dt>\"+a.label+\"</dt>\"):t.push('<dd lay-value=\"'+a.value+'\" class=\"'+(d===a.value?s:\"\")+(a.disabled?\" \"+c:\"\")+'\">'+a.innerHTML+\"</dd>\"):t.push('<dd lay-value=\"\" class=\"layui-select-tips\">'+(a.innerHTML||i)+\"</dd>\")}),0===t.length&&t.push('<dd lay-value=\"\" class=\"'+c+'\">没有选项</dd>'),t.join(\"\")}(r.find(\"*\"))+\"</dl>\",\"</div>\"].join(\"\"));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:[\"layui-form-checkbox\",\"layui-form-checked\",\"checkbox\"],_switch:[\"layui-form-switch\",\"layui-form-onswitch\",\"switch\"]},i=u.find(\"input[type=checkbox]\"),a=function(e,i){var a=t(this);e.on(\"click\",function(){var t=a.attr(\"lay-filter\"),n=(a.attr(\"lay-text\")||\"\").split(\"|\");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find(\"em\").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find(\"em\").text(n[0])),layui.event.call(a[0],l,i[2]+\"(\"+t+\")\",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr(\"lay-skin\"),s=(l.attr(\"lay-text\")||\"\").split(\"|\"),o=this.disabled;\"switch\"===r&&(r=\"_\"+r);var u=e[r]||e.checkbox;if(\"string\"==typeof l.attr(\"lay-ignore\"))return l.show();var d=l.next(\".\"+u[0]),f=t(['<div class=\"layui-unselect '+u[0],n.checked?\" \"+u[1]:\"\",o?\" layui-checkbox-disbaled \"+c:\"\",'\"',r?' lay-skin=\"'+r+'\"':\"\",\">\",function(){var e=n.title.replace(/\\s/g,\"\"),t={checkbox:[e?\"<span>\"+n.title+\"</span>\":\"\",'<i class=\"layui-icon layui-icon-ok\"></i>'].join(\"\"),_switch:\"<em>\"+((n.checked?s[0]:s[1])||\"\")+\"</em><i></i>\"};return t[r]||t.checkbox}(),\"</div>\"].join(\"\"));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e=\"layui-form-radio\",i=[\"&#xe643;\",\"&#xe63f;\"],a=u.find(\"input[type=radio]\"),n=function(a){var n=t(this),s=\"layui-anim-scaleSpring\";a.on(\"click\",function(){var o=n[0].name,c=n.parents(r),u=n.attr(\"lay-filter\"),d=c.find(\"input[name=\"+o.replace(/(\\.|#|\\[|\\])/g,\"\\\\$1\")+\"]\");n[0].disabled||(layui.each(d,function(){var a=t(this).next(\".\"+e);this.checked=!1,a.removeClass(e+\"ed\"),a.find(\".layui-icon\").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+\"ed\"),a.find(\".layui-icon\").addClass(s).html(i[0]),layui.event.call(n[0],l,\"radio(\"+u+\")\",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next(\".\"+e),o=this.disabled;if(\"string\"==typeof r.attr(\"lay-ignore\"))return r.show();s[0]&&s.remove();var u=t(['<div class=\"layui-unselect '+e,l.checked?\" \"+e+\"ed\":\"\",(o?\" layui-radio-disbaled \"+c:\"\")+'\">','<i class=\"layui-anim layui-icon\">'+i[l.checked?0:1]+\"</i>\",\"<div>\"+function(){var e=l.title||\"\";return\"string\"==typeof r.next().attr(\"lay-radio\")&&(e=r.next().html(),r.next().remove()),e}()+\"</div>\",\"</div>\"].join(\"\"));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error(\"不支持的\"+e+\"表单渲染\"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=t(this),a=f.config.verify,s=null,o=\"layui-form-danger\",c={},u=e.parents(r),d=u.find(\"*[lay-verify]\"),v=e.parents(\"form\")[0],h=u.find(\"input,select,textarea\"),y=e.attr(\"lay-filter\");if(layui.each(d,function(e,l){var r=t(this),c=r.attr(\"lay-verify\").split(\"|\"),u=r.attr(\"lay-verType\"),d=r.val();if(r.removeClass(o),layui.each(c,function(e,t){var c,f=\"\",v=\"function\"==typeof a[t];if(a[t]){var c=v?f=a[t](d,l):!a[t][0].test(d);if(f=f||a[t][1],c)return\"tips\"===u?i.tips(f,function(){return\"string\"==typeof r.attr(\"lay-ignore\")||\"select\"!==l.tagName.toLowerCase()&&!/^checkbox|radio$/.test(l.type)?r:r.next()}(),{tips:1}):\"alert\"===u?i.alert(f,{title:\"提示\",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||l.focus(),r.addClass(o),s=!0}}),s)return s}),s)return!1;var p={};return layui.each(h,function(e,t){if(t.name=(t.name||\"\").replace(/^\\s*|\\s*&/,\"\"),t.name){if(/^.*\\[\\]$/.test(t.name)){var i=t.name.match(/^(.*)\\[\\]$/g)[0];p[i]=0|p[i],t.name=t.name.replace(/^(.*)\\[\\]$/,\"$1[\"+p[i]++ +\"]\")}/^checkbox|radio$/.test(t.type)&&!t.checked||(c[t.name]=t.value)}}),layui.event.call(this,l,\"submit(\"+y+\")\",{elem:this,form:v,field:c})},f=new u,v=t(document),h=t(window);f.render(),v.on(\"reset\",r,function(){var e=t(this).attr(\"lay-filter\");setTimeout(function(){f.render(null,e)},50)}),v.on(\"submit\",r,d).on(\"click\",\"*[lay-submit]\",d),e(l,f)});layui.define(\"jquery\",function(e){\"use strict\";var o=layui.$,a=layui.hint(),i=\"layui-tree-enter\",r=function(e){this.options=e},t={arrow:[\"&#xe623;\",\"&#xe625;\"],checkbox:[\"&#xe626;\",\"&#xe627;\"],radio:[\"&#xe62b;\",\"&#xe62a;\"],branch:[\"&#xe622;\",\"&#xe624;\"],leaf:\"&#xe621;\"};r.prototype.init=function(e){var o=this;e.addClass(\"layui-box layui-tree\"),o.options.skin&&e.addClass(\"layui-tree-skin-\"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('<ul class=\"'+(n.spread?\"layui-show\":\"\")+'\"></ul>'),s=o([\"<li \"+(n.spread?'data-spread=\"'+n.spread+'\"':\"\")+\">\",function(){return l?'<i class=\"layui-icon layui-tree-spread\">'+(n.spread?t.arrow[1]:t.arrow[0])+\"</i>\":\"\"}(),function(){return r.check?'<i class=\"layui-icon layui-tree-check\">'+(\"checkbox\"===r.check?t.checkbox[0]:\"radio\"===r.check?t.radio[0]:\"\")+\"</i>\":\"\"}(),function(){return'<a href=\"'+(n.href||\"javascript:;\")+'\" '+(r.target&&n.href?'target=\"'+r.target+'\"':\"\")+\">\"+('<i class=\"layui-icon layui-tree-'+(l?\"branch\":\"leaf\")+'\">'+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+\"</i>\")+(\"<cite>\"+(n.name||\"未命名\")+\"</cite></a>\")}(),\"</li>\"].join(\"\"));l&&(s.append(c),i.tree(c,n.children)),e.append(s),\"function\"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children(\"a\").on(\"click\",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(\".layui-tree-spread\")),r=e.children(\"ul\"),n=e.children(\"a\"),l=function(){e.data(\"spread\")?(e.data(\"spread\",null),r.removeClass(\"layui-show\"),i.html(t.arrow[0]),n.find(\".layui-icon\").html(t.branch[0])):(e.data(\"spread\",!0),r.addClass(\"layui-show\"),i.html(t.arrow[1]),n.find(\".layui-icon\").html(t.branch[1]))};r[0]&&(i.on(\"click\",l),n.on(\"dblclick\",l))},r.prototype.on=function(e){var a=this,r=a.options,t=\"layui-tree-drag\";e.find(\"i\").on(\"selectstart\",function(e){return!1}),r.drag&&o(document).on(\"mousemove\",function(e){var i=a.move;if(i.from){var r=(i.to,o('<div class=\"layui-box '+t+'\"></div>'));e.preventDefault(),o(\".\"+t)[0]||o(\"body\").append(r);var n=o(\".\"+t)[0]?o(\".\"+t):r;n.addClass(\"layui-show\").html(i.from.elem.children(\"a\").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on(\"mouseup\",function(){var e=a.move;e.from&&(e.from.elem.children(\"a\").removeClass(i),e.to&&e.to.elem.children(\"a\").removeClass(i),a.move={},o(\".\"+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children(\"a\")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on(\"mousedown\",function(){var o=r.move;o.from={item:a,elem:e}}),t.on(\"mouseenter\",n).on(\"mousemove\",n).on(\"mouseleave\",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e(\"tree\",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error(\"layui.tree 没有找到\"+e.elem+\"元素\")})});layui.define([\"laytpl\",\"laypage\",\"layer\",\"form\",\"util\"],function(e){\"use strict\";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:\"LAY_CHECKED\",indexName:\"LAY_TABLE_INDEX\"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,u,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)},config:t}},s=function(e){var t=c.config[e];return t||o.error(\"The ID option was not found in the table instance\"),t||null},u=\"table\",h=\".layui-table\",y=\"layui-hide\",f=\"layui-none\",p=\"layui-table-view\",v=\".layui-table-tool\",m=\".layui-table-box\",g=\".layui-table-init\",b=\".layui-table-header\",x=\".layui-table-body\",k=\".layui-table-main\",C=\".layui-table-fixed\",w=\".layui-table-fixed-l\",T=\".layui-table-fixed-r\",A=\".layui-table-total\",L=\".layui-table-page\",S=\".layui-table-sort\",N=\"layui-table-edit\",W=\"layui-table-hover\",_=function(e){var t='{{#if(item2.colspan){}} colspan=\"{{item2.colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{item2.rowspan}}\"{{#}}}';return e=e||{},['<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',\"<thead>\",\"{{# layui.each(d.data.cols, function(i1, item1){ }}\",\"<tr>\",\"{{# layui.each(item1, function(i2, item2){ }}\",'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}','{{# if(item2.fixed === \"right\"){ right = true; } }}',function(){return e.fixed&&\"right\"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== \"right\"){ }}':\"right\"===e.fixed?'{{# if(item2.fixed === \"right\"){ }}':\"\"}(),\"{{# var isSort = !(item2.colGroup) && item2.sort; }}\",'<th data-field=\"{{ item2.field||i2 }}\" data-key=\"{{d.index}}-{{i1}}-{{i2}}\" {{# if( item2.parentKey){ }}data-parentkey=\"{{ item2.parentKey }}\"{{# } }} {{# if(item2.minWidth){ }}data-minwidth=\"{{item2.minWidth}}\"{{# } }} '+t+' {{# if(item2.unresize || item2.colGroup){ }}data-unresize=\"true\"{{# } }} class=\"{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}\">','<div class=\"layui-table-cell laytable-cell-',\"{{# if(item2.colGroup){ }}\",\"group\",\"{{# } else { }}\",\"{{d.index}}-{{i1}}-{{i2}}\",'{{# if(item2.type !== \"normal\"){ }}',\" laytable-cell-{{ item2.type }}\",\"{{# } }}\",\"{{# } }}\",'\" {{#if(item2.align){}}align=\"{{item2.align}}\"{{#}}}>','{{# if(item2.type === \"checkbox\"){ }}','<input type=\"checkbox\" name=\"layTableCheckbox\" lay-skin=\"primary\" lay-filter=\"layTableAllChoose\" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>',\"{{# } else { }}\",'<span>{{item2.title||\"\"}}</span>',\"{{# if(isSort){ }}\",'<span class=\"layui-table-sort layui-inline\"><i class=\"layui-edge layui-table-sort-asc\" title=\"升序\"></i><i class=\"layui-edge layui-table-sort-desc\" title=\"降序\"></i></span>',\"{{# } }}\",\"{{# } }}\",\"</div>\",\"</th>\",e.fixed?\"{{# }; }}\":\"\",\"{{# }); }}\",\"</tr>\",\"{{# }); }}\",\"</thead>\",\"</table>\"].join(\"\")},E=['<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',\"<tbody></tbody>\",\"</table>\"].join(\"\"),z=['<div class=\"layui-form layui-border-box {{d.VIEW_CLASS}}\" lay-filter=\"LAY-table-{{d.index}}\" lay-id=\"{{ d.data.id }}\" style=\"{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}\">',\"{{# if(d.data.toolbar){ }}\",'<div class=\"layui-table-tool\">','<div class=\"layui-table-tool-temp\"></div>','<div class=\"layui-table-tool-self\"></div>',\"</div>\",\"{{# } }}\",'<div class=\"layui-table-box\">',\"{{# if(d.data.loading){ }}\",'<div class=\"layui-table-init\" style=\"background-color: #fff;\">','<i class=\"layui-icon layui-icon-loading layui-icon\"></i>',\"</div>\",\"{{# } }}\",\"{{# var left, right; }}\",'<div class=\"layui-table-header\">',_(),\"</div>\",'<div class=\"layui-table-body layui-table-main\">',E,\"</div>\",\"{{# if(left){ }}\",'<div class=\"layui-table-fixed layui-table-fixed-l\">','<div class=\"layui-table-header\">',_({fixed:!0}),\"</div>\",'<div class=\"layui-table-body\">',E,\"</div>\",\"</div>\",\"{{# }; }}\",\"{{# if(right){ }}\",'<div class=\"layui-table-fixed layui-table-fixed-r\">','<div class=\"layui-table-header\">',_({fixed:\"right\"}),'<div class=\"layui-table-mend\"></div>',\"</div>\",'<div class=\"layui-table-body\">',E,\"</div>\",\"</div>\",\"{{# }; }}\",\"</div>\",\"{{# if(d.data.totalRow){ }}\",'<div class=\"layui-table-total\">','<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>','<tbody><tr><td><div class=\"layui-table-cell\" style=\"visibility: hidden;\">Total</div></td></tr></tbody>',\"</table>\",\"</div>\",\"{{# } }}\",\"{{# if(d.data.page){ }}\",'<div class=\"layui-table-page\">','<div id=\"layui-table-page{{d.index}}\"></div>',\"</div>\",\"{{# } }}\",\"<style>\",\"{{# layui.each(d.data.cols, function(i1, item1){\",\"layui.each(item1, function(i2, item2){ }}\",\".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ \",\"{{# if(item2.width){ }}\",\"width: {{item2.width}}px;\",\"{{# } }}\",\" }\",\"{{# });\",\"}); }}\",\"</style>\",\"</div>\"].join(\"\"),H=t(window),R=t(document),F=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};F.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:[\"filter\",\"exports\",\"print\"],autoSort:!0,text:{none:\"无数据\"}},F.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr(\"id\")||e.index,a.request=t.extend({pageName:\"page\",limitName:\"limit\"},a.request),a.response=t.extend({statusName:\"code\",statusCode:0,msgName:\"msg\",dataName:\"data\",countName:\"count\"},a.response),\"object\"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split(\"-\")[1],a.height=H.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next(\".\"+p),o=e.elem=t(i(z).render({VIEW_CLASS:p,data:a,index:e.index}));if(a.index=e.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(v),e.layBox=o.find(m),e.layHeader=o.find(b),e.layMain=o.find(k),e.layBody=o.find(x),e.layFixed=o.find(C),e.layFixLeft=o.find(w),e.layFixRight=o.find(T),e.layTotal=o.find(A),e.layPage=o.find(L),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(b).find(\"th\");r.height(e.layHeader.height()-1-parseFloat(r.css(\"padding-top\"))-parseFloat(r.css(\"padding-bottom\")))}e.pullData(e.page),e.events()},F.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type=\"checkbox\"),e.space&&(e.type=\"space\"),e.type||(e.type=\"normal\"),\"normal\"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},F.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l=\"none\"===t.css(\"display\")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),\"width\"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+\"-\"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+\"-\"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},F.prototype.renderToolbar=function(){var e=this,a=e.config,l=['<div class=\"layui-inline\" lay-event=\"add\"><i class=\"layui-icon layui-icon-add-1\"></i></div>','<div class=\"layui-inline\" lay-event=\"update\"><i class=\"layui-icon layui-icon-edit\"></i></div>','<div class=\"layui-inline\" lay-event=\"delete\"><i class=\"layui-icon layui-icon-delete\"></i></div>'].join(\"\"),n=e.layTool.find(\".layui-table-tool-temp\");if(\"default\"===a.toolbar)n.html(l);else if(\"string\"==typeof a.toolbar){var o=t(a.toolbar).html()||\"\";o&&n.html(i(o).render(a))}var r={filter:{title:\"筛选列\",layEvent:\"LAYTABLE_COLS\",icon:\"layui-icon-cols\"},exports:{title:\"导出\",layEvent:\"LAYTABLE_EXPORT\",icon:\"layui-icon-export\"},print:{title:\"打印\",layEvent:\"LAYTABLE_PRINT\",icon:\"layui-icon-print\"}},d=[];\"object\"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i=r[t];i&&d.push('<div class=\"layui-inline\" title=\"'+i.title+'\" lay-event=\"'+i.layEvent+'\"><i class=\"layui-icon '+i.icon+'\"></i></div>')}),e.layTool.find(\".layui-table-tool-self\").html(d.join(\"\"))},F.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key=\"'+a.index+\"-\"+t+'\"]'),n=parseInt(l.attr(\"colspan\"))||0;if(l[0]){var o=t.split(\"-\"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr(\"colspan\",n),l[n<1?\"addClass\":\"removeClass\"](y),r.colspan=n,r.hide=n<1;var d=l.data(\"parentkey\");d&&i.setParentCol(e,d)}},F.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},F.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit(\"width\");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return\"line\"===t.skin||\"nob\"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&l<s&&(a--,c=s):(c=d.width||0,/\\d+%$/.test(c)?(c=Math.floor(parseFloat(c)/100*o),c<s&&(c=s)):c||(d.width=c=0,a++)),d.hide&&(c=0),n+=c)):void r.splice(i,1)})}),o>n&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+\"-\"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+\"px\"}):/\\d+%$/.test(a.width)&&e.getCssRule(t.index+\"-\"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+\"px\"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children(\"table\").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find(\"thead th:last-child\"),i=t.data(\"field\"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data(\"key\");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+\"px\",e.layMain.height()-e.layMain.prop(\"clientHeight\")>0&&(t.style.width=parseFloat(t.style.width)-1+\"px\")})}e.loading(!0)},F.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},F.prototype.reload=function(e){var i=this;i.config.data&&i.config.data.constructor===Array&&delete i.config.data,i.config=t.extend({},i.config,e),i.render()},F.prototype.page=1,F.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){\"object\"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf(\"application/json\")&&(d=JSON.stringify(d)),t.ajax({type:a.method||\"get\",url:a.url,contentType:a.contentType,data:d,dataType:\"json\",headers:a.headers||{},success:function(t){\"function\"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.layMain.html('<div class=\"'+f+'\">'+(t[n.msgName]||\"返回的数据不符合规范，正确的成功状态码 (\"+n.statusName+\") 应为：\"+n.statusCode)+\"</div>\")):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+\" ms\"),i.setColsWidth(),\"function\"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.layMain.html('<div class=\"'+f+'\">数据接口请求异常：'+t+\"</div>\"),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,a.data.length),o(),i.setColsWidth(),\"function\"==typeof a.done&&a.done(c,e,c[n.countName])}},F.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},F.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,u=e[s.response.dataName]||[],h=[],p=[],v=[],m=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(u,function(a,l){var o=[],u=[],f=[],m=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+\"-\"+r.key,p=l[c];if(void 0!==p&&null!==p||(p=\"\"),!r.colGroup){var v=['<td data-field=\"'+c+'\" data-key=\"'+h+'\" '+function(){var e=[];return r.edit&&e.push('data-edit=\"'+r.edit+'\"'),r.align&&e.push('align=\"'+r.align+'\"'),r.templet&&e.push('data-content=\"'+p+'\"'),r.toolbar&&e.push('data-off=\"true\"'),r.event&&e.push('lay-event=\"'+r.event+'\"'),r.style&&e.push('style=\"'+r.style+'\"'),r.minWidth&&e.push('data-minwidth=\"'+r.minWidth+'\"'),e.join(\" \")}()+' class=\"'+function(){var e=[];return r.hide&&e.push(y),r.field||e.push(\"layui-table-col-special\"),e.join(\" \")}()+'\">','<div class=\"layui-table-cell laytable-cell-'+function(){return\"normal\"===r.type?h:h+\" laytable-cell-\"+r.type}()+'\">'+function(){var n=t.extend(!0,{LAY_INDEX:m},l),o=d.config.checkName;switch(r.type){case\"checkbox\":return'<input type=\"checkbox\" name=\"layTableCheckbox\" lay-skin=\"primary\" '+function(){return r[o]?(l[o]=r[o],r[o]?\"checked\":\"\"):n[o]?\"checked\":\"\"}()+\">\";case\"radio\":return n[o]&&(e=a),'<input type=\"radio\" name=\"layTableRadio_'+s.index+'\" '+(n[o]?\"checked\":\"\")+' lay-type=\"layTableRadio\">';case\"numbers\":return m}return r.toolbar?i(t(r.toolbar).html()||\"\").render(n):r.templet?function(){return\"function\"==typeof r.templet?r.templet(n):i(t(r.templet).html()||String(p)).render(n)}():p}(),\"</div></td>\"].join(\"\");o.push(v),r.fixed&&\"right\"!==r.fixed&&u.push(v),\"right\"===r.fixed&&f.push(v)}}),h.push('<tr data-index=\"'+a+'\">'+o.join(\"\")+\"</tr>\"),p.push('<tr data-index=\"'+a+'\">'+u.join(\"\")+\"</tr>\"),v.push('<tr data-index=\"'+a+'\">'+f.join(\"\")+\"</tr>\"))}),c.layBody.scrollTop(0),c.layMain.find(\".\"+f).remove(),c.layMain.find(\"tbody\").html(h.join(\"\")),c.layFixLeft.find(\"tbody\").html(p.join(\"\")),c.layFixRight.find(\"tbody\").html(v.join(\"\")),c.renderForm(),\"number\"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return c.key=s.id||s.index,d.cache[c.key]=u,c.layPage[0==o||0===u.length&&1==n?\"addClass\":\"removeClass\"](y),r?m():0===u.length?(c.renderForm(),c.layFixed.remove(),c.layMain.find(\"tbody\").html(\"\"),c.layMain.find(\".\"+f).remove(),c.layMain.append('<div class=\"'+f+'\">'+s.text.none+\"</div>\")):(m(),c.renderTotal(u),void(s.page&&(s.page=t.extend({elem:\"layui-table-page\"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:[\"prev\",\"page\",\"next\",\"skip\",\"count\",\"limit\"],prev:'<i class=\"layui-icon\">&#xe603;</i>',next:'<i class=\"layui-icon\">&#xe602;</i>',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.loading(),c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},F.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})});var l=[];t.eachCols(function(e,t){var n=t.field||e,o=['<td data-field=\"'+n+'\" data-key=\"'+i.index+\"-\"+t.key+'\" '+function(){var e=[];return t.align&&e.push('align=\"'+t.align+'\"'),t.style&&e.push('style=\"'+t.style+'\"'),t.minWidth&&e.push('data-minwidth=\"'+t.minWidth+'\"'),e.join(\" \")}()+' class=\"'+function(){var e=[];return t.hide&&e.push(y),t.field||e.push(\"layui-table-col-special\"),e.join(\" \")}()+'\">','<div class=\"layui-table-cell laytable-cell-'+function(){var e=i.index+\"-\"+t.key;return\"normal\"===t.type?e:e+\" laytable-cell-\"+t.type}()+'\">'+function(){var e=t.totalRowText||\"\";return t.totalRow?parseFloat(a[n]).toFixed(2)||e:e}(),\"</div></td>\"].join(\"\");l.push(o)}),t.layTotal.find(\"tbody\").html(\"<tr>\"+l.join(\"\")+\"</tr>\")}},F.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(\".laytable-cell-\"+(a.index+\"-\"+t)+\":eq(0)\")},F.prototype.renderForm=function(e){n.render(e,\"LAY-table-\"+this.index)},F.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,\"layui-table-click\"),a=t.layBody.find('tr[data-index=\"'+e+'\"]');a.addClass(i).siblings(\"tr\").removeClass(i)},F.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},h=c.config,y=h.elem.attr(\"lay-filter\"),f=d.cache[c.key];\"string\"==typeof e&&c.layHeader.find(\"th\").each(function(i,a){var l=t(this),o=l.data(\"field\");if(o===e)return e=l,n=o,!1});try{var n=n||e.data(\"field\"),p=e.data(\"key\");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find(\"th .laytable-cell-\"+p).find(S);c.layHeader.find(\"th\").find(S).removeAttr(\"lay-sort\"),v.attr(\"lay-sort\",i||null),c.layFixed.find(\"th\")}catch(m){return o.error(\"Table modules: Did not match to field\")}c.sortKey={field:n,sort:i},h.autoSort&&(\"asc\"===i?r=layui.sort(f,n):\"desc\"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[h.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,u,\"sort(\"+y+\")\",{field:n,type:i})},F.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(g).remove()):(i.layInit=t(['<div class=\"layui-table-init\">','<i class=\"layui-icon layui-icon-loading layui-icon\"></i>',\"</div>\"].join(\"\")),i.layBox.append(i.layInit)))},F.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},F.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name=\"layTableCheckbox\"]'),a=function(i){return e.eachCols(function(e,a){\"checkbox\"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop(\"checked\",!0),e.renderForm(\"checkbox\")),a(!0)):(i[0].checked&&(i.prop(\"checked\",!1),e.renderForm(\"checkbox\")),a(!1)))},F.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find(\"style\")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===\".laytable-cell-\"+e)return t(a),!0})},F.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=H.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css(\"height\",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e=e-(t.layPage.outerHeight()||41)-2),t.layMain.css(\"height\",e))},F.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement(\"div\"),e.style.width=\"100px\",e.style.height=\"100px\",e.style.overflowY=\"scroll\",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},F.prototype.scrollPatch=function(){var e=this,i=e.layMain.children(\"table\"),a=e.layMain.width()-e.layMain.prop(\"clientWidth\"),l=e.layMain.height()-e.layMain.prop(\"clientHeight\"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(\".layui-table-patch\")[0]){var i=t('<th class=\"layui-table-patch\"><div class=\"layui-table-cell\"></div></th>');i.find(\"div\").css({width:a}),e.find(\"tr\").append(i)}}else e.find(\".layui-table-patch\").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(x).css(\"height\",i.height()>=d?d:\"auto\"),e.layFixRight[n>0?\"removeClass\":\"addClass\"](y),e.layFixRight.css(\"right\",a-1)},F.prototype.events=function(){var e,a=this,o=a.config,c=t(\"body\"),s={},h=a.layHeader.find(\"th\"),f=\".layui-table-cell\",p=o.elem.attr(\"lay-filter\");a.layTool.on(\"click\",\"*[lay-event]\",function(e){var i=t(this),c=i.attr(\"lay-event\"),s=function(e){var l=t(e.list),n=t('<ul class=\"layui-table-tool-panel\"></ul>');n.html(l),o.height&&n.css(\"max-height\",o.height-(a.layTool.outerHeight()||50)),i.find(\".layui-table-tool-panel\")[0]||i.append(n),a.renderForm(),n.on(\"click\",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),R.trigger(\"table.tool.panel.remove\"),l.close(a.tipsIndex),c){case\"LAYTABLE_COLS\":s({list:function(){var e=[];return a.eachCols(function(t,i){i.field&&\"normal\"==i.type&&e.push('<li><input type=\"checkbox\" name=\"'+i.field+'\" data-key=\"'+i.key+'\" data-parentkey=\"'+(i.parentKey||\"\")+'\" lay-skin=\"primary\" '+(i.hide?\"\":\"checked\")+' title=\"'+(i.title||i.field)+'\" lay-filter=\"LAY_TABLE_TOOL_COLS\"></li>')}),e.join(\"\")}(),done:function(){n.on(\"checkbox(LAY_TABLE_TOOL_COLS)\",function(e){var i=t(e.elem),l=this.checked,n=i.data(\"key\"),r=i.data(\"parentkey\");layui.each(o.cols,function(e,t){layui.each(t,function(t,i){if(e+\"-\"+t===n){var d=i.hide;i.hide=!l,a.elem.find('*[data-key=\"'+o.index+\"-\"+n+'\"]')[l?\"removeClass\":\"addClass\"](y),d!=i.hide&&a.setParentCol(!l,r),a.resize()}})})})}});break;case\"LAYTABLE_EXPORT\":r.ie?l.tips(\"导出功能不支持 IE，请用 Chrome 等高级浏览器导出\",this,{tips:3}):s({list:function(){return['<li data-type=\"csv\">导出到 Csv 文件</li>','<li data-type=\"xls\">导出到 Excel 文件</li>'].join(\"\")}(),done:function(e,i){i.on(\"click\",function(){var e=t(this).data(\"type\");d.exportFile(o.id,null,e)})}});break;case\"LAYTABLE_PRINT\":var h=window.open(\"打印窗口\",\"_blank\"),f=[\"<style>\",\"body{font-size: 12px; color: #666;}\",\"table{width: 100%; border-collapse: collapse; border-spacing: 0;}\",\"th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}\",\"a{color: #666; text-decoration:none;}\",\"*.layui-hide{display: none}\",\"</style>\"].join(\"\"),v=t(a.layHeader.html());v.append(a.layMain.find(\"table\").html()),v.find(\"th.layui-table-patch\").remove(),v.find(\".layui-table-col-special\").remove(),h.document.write(f+v.prop(\"outerHTML\")),h.document.close(),h.print(),h.close()}layui.event.call(this,u,\"toolbar(\"+p+\")\",t.extend({event:c,config:o},{}))}),h.on(\"mousemove\",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data(\"unresize\")||s.resizeStart||(s.allowResize=i.width()-l<=10,c.css(\"cursor\",s.allowResize?\"col-resize\":\"\"))}).on(\"mouseleave\",function(){t(this);s.resizeStart||c.css(\"cursor\",\"\")}).on(\"mousedown\",function(e){var i=t(this);if(s.allowResize){var l=i.data(\"key\");e.preventDefault(),s.resizeStart=!0,s.offset=[e.clientX,e.clientY],a.getCssRule(l,function(e){var t=e.style.width||i.outerWidth();s.rule=e,s.ruleWidth=parseFloat(t),s.minWidth=i.data(\"minwidth\")||o.cellMinWidth})}}),R.on(\"mousemove\",function(t){if(s.resizeStart){if(t.preventDefault(),s.rule){var i=s.ruleWidth+t.clientX-s.offset[0];i<s.minWidth&&(i=s.minWidth),s.rule.style.width=i+\"px\",l.close(a.tipsIndex)}e=1}}).on(\"mouseup\",function(t){s.resizeStart&&(s={},c.css(\"cursor\",\"\"),a.scrollPatch()),2===e&&(e=null)}),h.on(\"click\",function(i){var l,n=t(this),o=n.find(S),r=o.attr(\"lay-sort\");return o[0]&&1!==e?(l=\"asc\"===r?\"desc\":\"desc\"===r?null:\"asc\",void a.sort(n,l,null,!0)):e=2}).find(S+\" .layui-edge \").on(\"click\",function(e){var i=t(this),l=i.index(),n=i.parents(\"th\").eq(0).data(\"field\");layui.stope(e),0===l?a.sort(n,\"asc\",null,!0):a.sort(n,\"desc\",null,!0)});var v=function(e){var l=t(this),n=l.parents(\"tr\").eq(0).data(\"index\"),o=a.layBody.find('tr[data-index=\"'+n+'\"]'),r=d.cache[a.key][n];return t.extend({tr:o,data:d.clearCacheKey(r),del:function(){d.cache[a.key][n]=[],o.remove(),a.scrollPatch()},update:function(e){e=e||{},layui.each(e,function(e,l){if(e in r){var n,d=o.children('td[data-field=\"'+e+'\"]');r[e]=l,a.eachCols(function(t,i){i.field==e&&i.templet&&(n=i.templet)}),d.children(f).html(function(){return n?function(){return\"function\"==typeof n?n(r):i(t(n).html()||l).render(r)}():l}()),d.data(\"content\",l)}})}},e)};a.elem.on(\"click\",'input[name=\"layTableCheckbox\"]+',function(){var e=t(this).prev(),i=a.layBody.find('input[name=\"layTableCheckbox\"]'),l=e.parents(\"tr\").eq(0).data(\"index\"),n=e[0].checked,o=\"layTableAllChoose\"===e.attr(\"lay-filter\");o?(i.each(function(e,t){t.checked=n,a.setCheckData(e,n)}),a.syncCheckAll(),a.renderForm(\"checkbox\")):(a.setCheckData(l,n),a.syncCheckAll()),layui.event.call(e[0],u,\"checkbox(\"+p+\")\",v.call(e[0],{checked:n,type:o?\"all\":\"one\"}))}),a.elem.on(\"click\",'input[lay-type=\"layTableRadio\"]+',function(){var e=t(this).prev(),i=e[0].checked,l=d.cache[a.key],n=e.parents(\"tr\").eq(0).data(\"index\");layui.each(l,function(e,t){n===e?t.LAY_CHECKED=!0:delete t.LAY_CHECKED}),a.setThisRowChecked(n),layui.event.call(this,u,\"radio(\"+p+\")\",v.call(this,{checked:i}))}),a.layBody.on(\"mouseenter\",\"tr\",function(){var e=t(this),i=e.index();a.layBody.find(\"tr:eq(\"+i+\")\").addClass(W)}).on(\"mouseleave\",\"tr\",function(){var e=t(this),i=e.index();a.layBody.find(\"tr:eq(\"+i+\")\").removeClass(W)}).on(\"click\",\"tr\",function(){m.call(this,\"row\")}).on(\"dblclick\",\"tr\",function(){m.call(this,\"rowDouble\")});var m=function(e){var i=t(this);layui.event.call(this,u,e+\"(\"+p+\")\",v.call(i.children(\"td\")[0]))};a.layBody.on(\"change\",\".\"+N,function(){var e=t(this),i=this.value,l=e.parent().data(\"field\"),n=e.parents(\"tr\").eq(0).data(\"index\"),o=d.cache[a.key][n];o[l]=i,layui.event.call(this,u,\"edit(\"+p+\")\",v.call(this,{value:i,field:l}))}).on(\"blur\",\".\"+N,function(){var e,l=t(this),n=l.parent().data(\"field\"),o=l.parents(\"tr\").eq(0).data(\"index\"),r=d.cache[a.key][o];a.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),l.siblings(f).html(function(a){return e?function(){return\"function\"==typeof e?e(r):i(t(e).html()||this.value).render(r)}():a}(this.value)),l.parent().data(\"content\",this.value),l.remove()}),a.layBody.on(\"click\",\"td\",function(e){var i=t(this),a=(i.data(\"field\"),i.data(\"edit\")),l=i.children(f);if(!i.data(\"off\")&&a){var n=t('<input class=\"layui-input '+N+'\">');return n[0].value=i.data(\"content\")||l.text(),i.find(\".\"+N)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on(\"mouseenter\",\"td\",function(){b.call(this)}).on(\"mouseleave\",\"td\",function(){b.call(this,\"hide\")});var g=\"layui-table-grid-down\",b=function(e){var i=t(this),a=i.children(f);if(e)i.find(\".layui-table-grid-down\").remove();else if(a.prop(\"scrollWidth\")>a.outerWidth()){if(a.find(\".\"+g)[0])return;i.append('<div class=\"'+g+'\"><i class=\"layui-icon layui-icon-down\"></i></div>')}};a.layBody.on(\"click\",\".\"+g,function(e){var i=t(this),n=i.parent(),d=n.children(f);a.tipsIndex=l.tips(['<div class=\"layui-table-tips-main\" style=\"margin-top: -'+(d.height()+16)+\"px;\"+function(){return\"sm\"===o.size?\"padding: 4px 15px; font-size: 12px;\":\"lg\"===o.size?\"padding: 14px 15px;\":\"\"}()+'\">',d.html(),\"</div>\",'<i class=\"layui-icon layui-table-tips-c layui-icon-close\"></i>'].join(\"\"),d[0],{tips:[3,\"\"],time:-1,anim:-1,maxWidth:r.ios||r.android?300:a.elem.width()/2,isOutAnim:!1,skin:\"layui-table-tips\",success:function(e,t){e.find(\".layui-table-tips-c\").on(\"click\",function(){l.close(t)})}}),layui.stope(e)}),a.layBody.on(\"click\",\"*[lay-event]\",function(){var e=t(this),i=e.parents(\"tr\").eq(0).data(\"index\");layui.event.call(this,u,\"tool(\"+p+\")\",v.call(this,{event:e.attr(\"lay-event\")})),a.setThisRowChecked(i)}),a.layMain.on(\"scroll\",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layTotal.scrollLeft(i),a.layFixed.find(x).scrollTop(n),l.close(a.tipsIndex)}),R.on(\"click\",function(){R.trigger(\"table.remove.tool.panel\")}),R.on(\"table.remove.tool.panel\",function(){t(\".layui-table-tool-panel\").remove()}),H.on(\"resize\",function(){a.resize()})},d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter=\"'+e+'\"]':h+\"[lay-data]\"),n=\"Table element property lay-data configuration item has a syntax error: \";return l.each(function(){var a=t(this),l=a.attr(\"lay-data\");try{l=new Function(\"return \"+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr(\"lay-skin\"),size:a.attr(\"lay-size\"),even:\"string\"==typeof a.attr(\"lay-even\")},d.config,i,l);e&&a.hide(),a.find(\"thead>tr\").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr(\"lay-data\");try{l=new Function(\"return \"+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr(\"colspan\")||0,rowspan:a.attr(\"rowspan\")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find(\"tbody>tr\").each(function(e){var i=t(this),a={};i.children(\"td\").each(function(e,i){var l=t(this),n=l.data(\"field\");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children(\"td\").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void(\"function\"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){t=t||d.clearCacheKey(d.cache[e]),i=i||\"csv\";var a=c.config[e]||{},l={csv:\"text/csv\",xls:\"application/vnd.ms-excel\"}[i],n=document.createElement(\"a\");return r.ie?o.error(\"IE_NOT_SUPPORT_EXPORTS\"):(n.href=\"data:\"+l+\";charset=utf-8,\\ufeff\"+encodeURIComponent(function(){var i=[],a=[];return layui.each(t,function(t,l){var n=[];\"object\"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||\"\")}),layui.each(d.clearCacheKey(l),function(e,t){n.push(t)})):d.eachCols(e,function(e,a){a.field&&\"normal\"==a.type&&!a.hide&&(0==t&&i.push(a.title||\"\"),n.push(l[a.field]))}),a.push(n.join(\",\"))}),i.join(\",\")+\"\\r\\n\"+a.join(\"\\r\\n\")}()),n.download=(a.title||\"table_\"+(a.index||\"\"))+\".\"+i,document.body.appendChild(n),n.click(),void document.body.removeChild(n))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,i){i=i||{};var a=s(e);if(a)return i.data&&i.data.constructor===Array&&delete a.data,d.render(t.extend(!0,{},a,i))},d.render=function(e){var t=new F(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(u,d)});layui.define(\"jquery\",function(e){\"use strict\";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t=\"carousel\",a=\"layui-this\",l=\">*[carousel-item]>*\",o=\"layui-carousel-left\",r=\"layui-carousel-right\",d=\"layui-carousel-prev\",s=\"layui-carousel-next\",u=\"layui-carousel-arrow\",c=\"layui-carousel-ind\",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:\"600px\",height:\"280px\",full:!1,arrow:\"hover\",indicator:\"inside\",autoplay:!0,interval:3e3,anim:\"\",trigger:\"click\",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:\"fixed\",width:\"100%\",height:\"100%\",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr(\"lay-anim\",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class=\"layui-icon '+u+'\" lay-type=\"sub\">'+(\"updown\"===n.anim?\"&#xe619;\":\"&#xe603;\")+\"</button>\",'<button class=\"layui-icon '+u+'\" lay-type=\"add\">'+(\"updown\"===n.anim?\"&#xe61a;\":\"&#xe602;\")+\"</button>\"].join(\"\"));n.elem.attr(\"lay-arrow\",n.arrow),n.elem.find(\".\"+u)[0]&&n.elem.find(\".\"+u).remove(),n.elem.append(t),t.on(\"click\",function(){var n=i(this),t=n.attr(\"lay-type\");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class=\"'+c+'\"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push(\"<li\"+(n.index===e?' class=\"layui-this\"':\"\")+\"></li>\")}),i.join(\"\")}(),\"</ul></div>\"].join(\"\"));n.elem.attr(\"lay-indicator\",n.indicator),n.elem.find(\".\"+c)[0]&&n.elem.find(\".\"+c).remove(),n.elem.append(t),\"updown\"===n.anim&&t.css(\"margin-top\",-(t.height()/2)),t.find(\"li\").on(\"hover\"===n.trigger?\"mouseover\":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide(\"add\",a-n.index):a<n.index&&e.slide(\"sub\",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr(\"lay-filter\");n.haveSlide||(\"sub\"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+\" \"+d+\" \"+s+\" \"+o+\" \"+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find(\"li\").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,\"change(\"+m+\")\",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data(\"haveEvents\")||(i.elem.on(\"mouseenter\",function(){clearInterval(e.timer)}).on(\"mouseleave\",function(){e.autoplay()}),i.elem.data(\"haveEvents\",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});layui.define(\"jquery\",function(e){\"use strict\";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n=\"rate\",t=\"layui-rate\",o=\"layui-icon-rate\",s=\"layui-icon-rate-solid\",u=\"layui-icon-rate-half\",r=\"layui-icon-rate-solid layui-icon-rate-half\",c=\"layui-icon-rate-solid layui-icon-rate\",f=\"layui-icon-rate layui-icon-rate-half\",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:\"\"},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style=\"color: '+i.theme+';\"':\"\";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class=\"layui-rate\" '+(i.readonly?\"readonly\":\"\")+\">\",u=1;u<=i.length;u++){var r='<li class=\"layui-inline\"><i class=\"layui-icon '+(u>Math.floor(i.value)?o:s)+'\" '+l+\"></i></li>\";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class=\"layui-icon layui-icon-rate-half\" '+l+\"></i></li>\":n+=r}n+=\"</ul>\"+(i.text?'<span class=\"layui-inline\">'+i.value+\"星\":\"\")+\"</span>\";var c=i.elem,f=c.next(\".\"+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next(\"span\"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass(\"layui-inline\"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find(\"i\").width();l.children(\"li\").each(function(e){var t=e+1,v=a(this);v.on(\"click\",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next(\"span\").text(i.value+\"星\"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on(\"mousemove\",function(e){if(l.find(\"i\").each(function(){a(this).addClass(o).removeClass(r)}),l.find(\"i:lt(\"+t+\")\").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children(\"i\").addClass(u).removeClass(s)}}),v.on(\"mouseleave\",function(){l.find(\"i\").each(function(){a(this).addClass(o).removeClass(r)}),l.find(\"i:lt(\"+Math.floor(i.value)+\")\").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children(\"li:eq(\"+Math.floor(i.value)+\")\").children(\"i\").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});layui.define(\"jquery\",function(t){\"use strict\";var e=layui.$,i={fixbar:function(t){var i,a,n=\"layui-fixbar\",r=\"layui-fixbar-top\",o=e(document),l=e(\"body\");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?\"&#xe606;\":t.bar1,t.bar2=t.bar2===!0?\"&#xe607;\":t.bar2,t.bgcolor=t.bgcolor?\"background-color:\"+t.bgcolor:\"\";var c=[t.bar1,t.bar2,\"&#xe604;\"],g=e(['<ul class=\"'+n+'\">',t.bar1?'<li class=\"layui-icon\" lay-type=\"bar1\" style=\"'+t.bgcolor+'\">'+c[0]+\"</li>\":\"\",t.bar2?'<li class=\"layui-icon\" lay-type=\"bar2\" style=\"'+t.bgcolor+'\">'+c[1]+\"</li>\":\"\",'<li class=\"layui-icon '+r+'\" lay-type=\"top\" style=\"'+t.bgcolor+'\">'+c[2]+\"</li>\",\"</ul>\"].join(\"\")),s=g.find(\".\"+r),u=function(){var e=o.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e(\".\"+n)[0]||(\"object\"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find(\"li\").on(\"click\",function(){var i=e(this),a=i.attr(\"lay-type\");\"top\"===a&&e(\"html,body\").animate({scrollTop:0},200),t.click&&t.click.call(this,a)}),o.on(\"scroll\",function(){clearTimeout(a),a=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var a=this,n=\"function\"==typeof e,r=new Date(t).getTime(),o=new Date(!e||n?(new Date).getTime():e).getTime(),l=r-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=e);var g=setTimeout(function(){a.countdown(t,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(t).getTime();return n>6912e5?(n=new Date(t),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),e||(a[1][0]=i.digit(n.getHours()),a[1][1]=i.digit(n.getMinutes()),a[1][2]=i.digit(n.getSeconds())),a[0].join(\"-\")+\" \"+a[1].join(\":\")):n>=864e5?(n/1e3/60/60/24|0)+\"天前\":n>=36e5?(n/1e3/60/60|0)+\"小时前\":n>=12e4?(n/1e3/60|0)+\"分钟前\":n<0?\"未来\":\"刚刚\"},digit:function(t,e){var i=\"\";t=String(t),e=e||2;for(var a=t.length;a<e;a++)i+=\"0\";return t<Math.pow(10,e)?i+(0|t):t},toDateString:function(t,e){var i=this,a=new Date(t||new Date),n=[i.digit(a.getFullYear(),4),i.digit(a.getMonth()+1),i.digit(a.getDate())],r=[i.digit(a.getHours()),i.digit(a.getMinutes()),i.digit(a.getSeconds())];return e=e||\"yyyy-MM-dd HH:mm:ss\",e.replace(/yyyy/g,n[0]).replace(/MM/g,n[1]).replace(/dd/g,n[2]).replace(/HH/g,r[0]).replace(/mm/g,r[1]).replace(/ss/g,r[2])},escape:function(t){return String(t||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")}};!function(t,e,i){\"$:nomunge\";function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width(),a=e.height(),n=t.data(this,g);(i!==n.w||a!==n.h)&&e.trigger(c,[n.w=i,n.h=a])}),a()},o[s])}var n,r=t([]),o=t.resize=t.extend(t.resize,{}),l=\"setTimeout\",c=\"resize\",g=c+\"-special-event\",s=\"delay\",u=\"throttleWindow\";o[s]=250,o[u]=!0,t.event.special[c]={setup:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===r.length&&a()},teardown:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.not(e),e.removeData(g),r.length||clearTimeout(n)},add:function(e){function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width(),l.h=r!==i?r:o.height(),n.apply(this,arguments)}if(!o[u]&&this[l])return!1;var n;return t.isFunction(e)?(n=e,a):(n=e.handler,void(e.handler=a))}}}(e,window),t(\"util\",i)});layui.define(\"jquery\",function(e){\"use strict\";var l=layui.$,o=function(e){},t='<i class=\"layui-anim layui-anim-rotate layui-anim-loop layui-icon \">&#xe63e;</i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!(\"isAuto\"in e)||e.isAuto,v=e.end||\"没有更多了\",y=e.scrollElem&&e.scrollElem!==document,d=\"<cite>加载更多</cite>\",h=l('<div class=\"layui-flow-more\"><a href=\"javascript:;\">'+d+\"</a></div>\");f.find(\".layui-flow-more\")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find(\"a\").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find(\"a\").html(t),\"function\"==typeof e.done&&e.done(++c,p)};if(g(),h.find(\"a\").on(\"click\",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+\" img\",scrollElem:e.scrollElem});return s?(m.on(\"scroll\",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop(\"scrollHeight\"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||\"img\",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr(\"src\")){var m=e.attr(\"lay-src\");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr(\"src\",m).removeAttr(\"lay-src\"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on(\"scroll\",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e(\"flow\",new o)});layui.define([\"layer\",\"form\"],function(t){\"use strict\";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n=\"layedit\",o=\"layui-show\",r=\"layui-disabled\",c=function(){var t=this;t.index=0,t.config={tool:[\"strong\",\"italic\",\"underline\",\"del\",\"|\",\"left\",\"center\",\"right\",\"|\",\"link\",\"unlink\",\"face\",\"image\"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r=\"layui-layedit\",c=e(\"string\"==typeof t?\"#\"+t:t),u=\"LAY_layedit_\"+ ++a.index,d=c.next(\".\"+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join(\"\")}(),m=e(['<div class=\"'+r+'\">','<div class=\"layui-unselect layui-layedit-tool\">'+f+\"</div>\",'<div class=\"layui-layedit-iframe\">','<iframe id=\"'+u+'\" name=\"'+u+'\" textarea=\"'+t+'\" frameborder=\"0\"></iframe>',\"</div>\",\"</div>\"].join(\"\"));return l.ie&&l.ie<8?c.removeClass(\"layui-hide\").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass(\"layui-hide\").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e(\"#\"+i[1].attr(\"textarea\"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find(\"iframe\");n.css({height:a.height}).on(\"load\",function(){var o=n.contents(),r=n.prop(\"contentWindow\"),c=o.find(\"head\"),s=e([\"<style>\",\"*{margin: 0; padding: 0;}\",\"body{padding: 10px; line-height: 20px; overflow-x: hidden; word-wrap: break-word; font: 14px Helvetica Neue,Helvetica,PingFang SC,Microsoft YaHei,Tahoma,Arial,sans-serif; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}\",\"a{color:#01AAED; text-decoration:none;}a:hover{color:#c00}\",\"p{margin-bottom: 10px;}\",\"img{display: inline-block; border: none; vertical-align: middle;}\",\"pre{margin: 10px 0; padding: 10px; line-height: 20px; border: 1px solid #ddd; border-left-width: 6px; background-color: #F2F2F2; color: #333; font-family: Courier New; font-size: 12px;}\",\"</style>\"].join(\"\")),u=o.find(\"body\");c.append(s),u.attr(\"contenteditable\",\"true\").css({\"min-height\":a.height}).html(i.value||\"\"),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e(\"#LAY_layedit_\"+t),a=i.prop(\"contentWindow\");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on(\"keydown\",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if(\"pre\"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg(\"请暂时用shift+enter\"),!1}r.execCommand(\"formatBlock\",!1,\"<p>\")}}),e(n).parents(\"form\").on(\"submit\",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on(\"paste\",function(e){r.execCommand(\"formatBlock\",!1,\"<p>\"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find(\"*[style]\").each(function(){var t=this.style.textAlign;this.removeAttribute(\"style\"),e(this).css({\"text-align\":t||\"\"})}),t.find(\"table\").addClass(\"layui-table\"),t.find(\"script,link\").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute(\"text\"),l.selection){var r=a.text||i.text;if(\"a\"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop(\"outerHTML\")),a.select()}else{var r=a.toString()||i.text;if(\"a\"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l=\"layedit-tool-active\",n=p(m(a)),o=function(e){return t.find(\".layedit-tool-\"+e)};i&&i[i.hasClass(l)?\"removeClass\":\"addClass\"](l),t.find(\">i\").removeClass(l),o(\"unlink\").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;\"b\"!==t&&\"strong\"!==t||o(\"b\").addClass(l),\"i\"!==t&&\"em\"!==t||o(\"i\").addClass(l),\"u\"===t&&o(\"u\").addClass(l),\"strike\"===t&&o(\"d\").addClass(l),\"p\"===t&&(\"center\"===e?o(\"center\").addClass(l):\"right\"===e?o(\"right\").addClass(l):o(\"left\").addClass(l)),\"a\"===t&&(o(\"link\").addClass(l),o(\"unlink\").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr(\"href\"),target:l.attr(\"target\")},function(e){var a=l[0];\"A\"===a.tagName?a.href=e.url:v.call(t,\"a\",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand(\"unlink\")},face:function(e){x.call(this,function(i){v.call(t,\"img\",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use(\"upload\",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find(\"input\")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,\"img\",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||\"上传失败\")}})})},code:function(e){k.call(o,function(i){v.call(t,\"pre\",{text:i.code,\"lay-lang\":i.lang},e)})},help:function(){i.open({type:2,title:\"帮助\",area:[\"600px\",\"380px\"],shadeClose:!0,shade:.1,skin:\"layui-layer-msg\",content:[\"http://www.layui.com/about/layedit/help.html\",\"no\"]})}},s=a.find(\".layui-layedit-tool\"),u=function(){var i=e(this),a=i.attr(\"layedit-event\"),l=i.attr(\"lay-command\");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand(\"formatBlock\",!1,\"<p>\"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(\">i\").on(\"mousedown\",function(){var t=e(this),i=t.attr(\"layedit-event\");d.test(i)||u.call(this)}).on(\"click\",function(){var t=e(this),i=t.attr(\"layedit-event\");d.test(i)&&u.call(this)}),o.on(\"click\",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:\"LAY_layedit_link\",area:\"350px\",shade:.05,shadeClose:!0,moveType:1,title:\"超链接\",skin:\"layui-layer-msg\",content:['<ul class=\"layui-form\" style=\"margin: 15px;\">','<li class=\"layui-form-item\">','<label class=\"layui-form-label\" style=\"width: 60px;\">URL</label>','<div class=\"layui-input-block\" style=\"margin-left: 90px\">','<input name=\"url\" lay-verify=\"url\" value=\"'+(t.href||\"\")+'\" autofocus=\"true\" autocomplete=\"off\" class=\"layui-input\">',\"</div>\",\"</li>\",'<li class=\"layui-form-item\">','<label class=\"layui-form-label\" style=\"width: 60px;\">打开方式</label>','<div class=\"layui-input-block\" style=\"margin-left: 90px\">','<input type=\"radio\" name=\"target\" value=\"_self\" class=\"layui-input\" title=\"当前窗口\"'+(\"_self\"!==t.target&&t.target?\"\":\"checked\")+\">\",'<input type=\"radio\" name=\"target\" value=\"_blank\" class=\"layui-input\" title=\"新窗口\" '+(\"_blank\"===t.target?\"checked\":\"\")+\">\",\"</div>\",\"</li>\",'<li class=\"layui-form-item\" style=\"text-align: center;\">','<button type=\"button\" lay-submit lay-filter=\"layedit-link-yes\" class=\"layui-btn\"> 确定 </button>','<button style=\"margin-left: 20px;\" type=\"button\" class=\"layui-btn layui-btn-primary\"> 取消 </button>',\"</li>\",\"</ul>\"].join(\"\"),success:function(t,n){var o=\"submit(layedit-link-yes)\";a.render(\"radio\"),t.find(\".layui-btn-primary\").on(\"click\",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=[\"[微笑]\",\"[嘻嘻]\",\"[哈哈]\",\"[可爱]\",\"[可怜]\",\"[挖鼻]\",\"[吃惊]\",\"[害羞]\",\"[挤眼]\",\"[闭嘴]\",\"[鄙视]\",\"[爱你]\",\"[泪]\",\"[偷笑]\",\"[亲亲]\",\"[生病]\",\"[太开心]\",\"[白眼]\",\"[右哼哼]\",\"[左哼哼]\",\"[嘘]\",\"[衰]\",\"[委屈]\",\"[吐]\",\"[哈欠]\",\"[抱抱]\",\"[怒]\",\"[疑问]\",\"[馋嘴]\",\"[拜拜]\",\"[思考]\",\"[汗]\",\"[困]\",\"[睡]\",\"[钱]\",\"[失望]\",\"[酷]\",\"[色]\",\"[哼]\",\"[鼓掌]\",\"[晕]\",\"[悲伤]\",\"[抓狂]\",\"[黑线]\",\"[阴险]\",\"[怒骂]\",\"[互粉]\",\"[心]\",\"[伤心]\",\"[猪头]\",\"[熊猫]\",\"[兔子]\",\"[ok]\",\"[耶]\",\"[good]\",\"[NO]\",\"[赞]\",\"[来]\",\"[弱]\",\"[草泥马]\",\"[神马]\",\"[囧]\",\"[浮云]\",\"[给力]\",\"[围观]\",\"[威武]\",\"[奥特曼]\",\"[礼物]\",\"[钟]\",\"[话筒]\",\"[蜡烛]\",\"[蛋糕]\"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+\"images/face/\"+t+\".gif\"}),e}();return x.hide=x.hide||function(t){\"face\"!==e(t.target).attr(\"layedit-event\")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('<li title=\"'+e+'\"><img src=\"'+i+'\" alt=\"'+e+'\"></li>')}),'<ul class=\"layui-clear\">'+t.join(\"\")+\"</ul>\"}(),this,{tips:1,time:0,skin:\"layui-box layui-util-face\",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(\".layui-clear>li\").on(\"click\",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off(\"click\",x.hide).on(\"click\",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:\"LAY_layedit_code\",area:\"550px\",shade:.05,shadeClose:!0,moveType:1,title:\"插入代码\",skin:\"layui-layer-msg\",content:['<ul class=\"layui-form layui-form-pane\" style=\"margin: 15px;\">','<li class=\"layui-form-item\">','<label class=\"layui-form-label\">请选择语言</label>','<div class=\"layui-input-block\">','<select name=\"lang\">','<option value=\"JavaScript\">JavaScript</option>','<option value=\"HTML\">HTML</option>','<option value=\"CSS\">CSS</option>','<option value=\"Java\">Java</option>','<option value=\"PHP\">PHP</option>','<option value=\"C#\">C#</option>','<option value=\"Python\">Python</option>','<option value=\"Ruby\">Ruby</option>','<option value=\"Go\">Go</option>',\"</select>\",\"</div>\",\"</li>\",'<li class=\"layui-form-item layui-form-text\">','<label class=\"layui-form-label\">代码</label>','<div class=\"layui-input-block\">','<textarea name=\"code\" lay-verify=\"required\" autofocus=\"true\" class=\"layui-textarea\" style=\"height: 200px;\"></textarea>',\"</div>\",\"</li>\",'<li class=\"layui-form-item\" style=\"text-align: center;\">','<button type=\"button\" lay-submit lay-filter=\"layedit-code-yes\" class=\"layui-btn\"> 确定 </button>','<button style=\"margin-left: 20px;\" type=\"button\" class=\"layui-btn layui-btn-primary\"> 取消 </button>',\"</li>\",\"</ul>\"].join(\"\"),success:function(l,n){var o=\"submit(layedit-code-yes)\";a.render(\"select\"),l.find(\".layui-btn-primary\").on(\"click\",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'<i class=\"layui-icon layedit-tool-html\" title=\"HTML源代码\" lay-command=\"html\" layedit-event=\"html\"\">&#xe64b;</i><span class=\"layedit-tool-mid\"></span>',strong:'<i class=\"layui-icon layedit-tool-b\" title=\"加粗\" lay-command=\"Bold\" layedit-event=\"b\"\">&#xe62b;</i>',italic:'<i class=\"layui-icon layedit-tool-i\" title=\"斜体\" lay-command=\"italic\" layedit-event=\"i\"\">&#xe644;</i>',underline:'<i class=\"layui-icon layedit-tool-u\" title=\"下划线\" lay-command=\"underline\" layedit-event=\"u\"\">&#xe646;</i>',del:'<i class=\"layui-icon layedit-tool-d\" title=\"删除线\" lay-command=\"strikeThrough\" layedit-event=\"d\"\">&#xe64f;</i>',\"|\":'<span class=\"layedit-tool-mid\"></span>',left:'<i class=\"layui-icon layedit-tool-left\" title=\"左对齐\" lay-command=\"justifyLeft\" layedit-event=\"left\"\">&#xe649;</i>',center:'<i class=\"layui-icon layedit-tool-center\" title=\"居中对齐\" lay-command=\"justifyCenter\" layedit-event=\"center\"\">&#xe647;</i>',right:'<i class=\"layui-icon layedit-tool-right\" title=\"右对齐\" lay-command=\"justifyRight\" layedit-event=\"right\"\">&#xe648;</i>',link:'<i class=\"layui-icon layedit-tool-link\" title=\"插入链接\" layedit-event=\"link\"\">&#xe64c;</i>',unlink:'<i class=\"layui-icon layedit-tool-unlink layui-disabled\" title=\"清除链接\" lay-command=\"unlink\" layedit-event=\"unlink\"\">&#xe64d;</i>',face:'<i class=\"layui-icon layedit-tool-face\" title=\"表情\" layedit-event=\"face\"\">&#xe650;</i>',image:'<i class=\"layui-icon layedit-tool-image\" title=\"图片\" layedit-event=\"image\">&#xe64a;<input type=\"file\" name=\"file\"></i>',code:'<i class=\"layui-icon layedit-tool-code\" title=\"插入代码\" layedit-event=\"code\">&#xe64e;</i>',help:'<i class=\"layui-icon layedit-tool-help\" title=\"帮助\" layedit-event=\"help\">&#xe607;</i>'},w=new c;t(n,w)});layui.define(\"jquery\",function(e){\"use strict\";var a=layui.$,l=\"http://www.layui.com/doc/modules/code.html\";e(\"code\",function(e){var t=[];e=e||{},e.elem=a(e.elem||\".layui-code\"),e.about=!(\"about\"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr(\"lay-encode\")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")),c.html('<ol class=\"layui-code-ol\"><li>'+o.replace(/[\\r\\t\\n]+/g,\"</li><li>\")+\"</li></ol>\"),c.find(\">.layui-code-h3\")[0]||c.prepend('<h3 class=\"layui-code-h3\">'+(c.attr(\"lay-title\")||e.title||\"code\")+(e.about?'<a href=\"'+l+'\" target=\"_blank\">layui.code</a>':\"\")+\"</h3>\");var d=c.find(\">.layui-code-ol\");c.addClass(\"layui-box layui-code-view\"),(c.attr(\"lay-skin\")||e.skin)&&c.addClass(\"layui-code-\"+(c.attr(\"lay-skin\")||e.skin)),(d.find(\"li\").length/100|0)>0&&d.css(\"margin-left\",(d.find(\"li\").length/100|0)+\"px\"),(c.attr(\"lay-height\")||e.height)&&d.css(\"max-height\",c.attr(\"lay-height\")||e.height)})})}).addcss(\"modules/code.css\",\"skincodecss\");"
  },
  {
    "path": "sdk/易语言/ui/layui/layui.js",
    "content": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v=\"2.4.5\"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if(\"interactive\"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),i=function(t){e.console&&console.error&&console.error(\"Layui hint: \"+t)},a=\"undefined\"!=typeof opera&&\"[object Opera]\"===opera.toString(),u={layer:\"modules/layer\",laydate:\"modules/laydate\",laypage:\"modules/laypage\",laytpl:\"modules/laytpl\",layim:\"modules/layim\",layedit:\"modules/layedit\",form:\"modules/form\",upload:\"modules/upload\",tree:\"modules/tree\",table:\"modules/table\",element:\"modules/element\",rate:\"modules/rate\",colorpicker:\"modules/colorpicker\",slider:\"modules/slider\",carousel:\"modules/carousel\",flow:\"modules/flow\",util:\"modules/util\",code:\"modules/code\",jquery:\"modules/jquery\",mobile:\"modules/mobile\",\"layui.all\":\"../layui.all\"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r=\"function\"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return\"function\"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),layui[\"layui.all\"]||!layui[\"layui.all\"]&&layui[\"layui.mobile\"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n=\"PLaySTATION 3\"===navigator.platform?/^complete$/:/^(complete|loaded)$/;(\"load\"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+\" is not a valid module\"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):\"function\"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName(\"head\")[0];e=\"string\"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){\"jquery\"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\\/\\/([\\s\\S]+?)\\//)||[\"//\"+location.host+\"/\"])[0],0===e.length||layui[\"layui.all\"]&&u[f]||!layui[\"layui.all\"]&&layui[\"layui.mobile\"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+\" is not a valid module\"):void(\"string\"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement(\"script\"),h=(u[f]?p+\"lay/\":/^\\{\\/\\}/.test(y.modules[f])?\"\":o.base||\"\")+(y.modules[f]||f)+\".js\";h=h.replace(/^\\{\\/\\}/,\"\"),v.async=!0,v.charset=\"utf-8\",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||\"\";return e?\"?v=\"+e:\"\"}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf(\"[native code\")<0||a?v.addEventListener(\"load\",function(e){s(e,h)},!1):v.attachEvent(\"onreadystatechange\",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement(\"link\"),l=t.getElementsByTagName(\"head\")[0];\"string\"==typeof n&&(r=n);var s=(r||e).replace(/\\.|\\//g,\"\"),c=u.id=\"layuicss-\"+s,y=0;return u.rel=\"stylesheet\",u.href=e+(o.debug?\"?v=\"+(new Date).getTime():\"\"),u.media=\"all\",t.getElementById(c)||l.appendChild(u),\"function\"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+\" timeout\"):void(1989===parseInt(a.getStyle(t.getElementById(c),\"width\"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return\"function\"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+\"css/\"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,\"function\"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,\"function\"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i(\"模块名 \"+o+\" 已被占用\"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||\"\"};return/^#\\//.test(e)?(e=e.replace(/^#\\//,\"\"),o.href=\"/\"+e,e=e.replace(/([^#])(#.*$)/,\"$1\").split(\"/\")||[],t.each(e,function(e,t){/^\\w+=/.test(t)?function(){t=t.split(\"=\"),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||\"layui\",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o=\"object\"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return\"value\"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+\"/([^\\\\s\\\\_\\\\-]+)\");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?\"windows\":/linux/.test(o)?\"linux\":/iphone|ipod|ipad|ios/.test(o)?\"ios\":/mac/.test(o)?\"mac\":void 0}(),ie:function(){return!!(e.ActiveXObject||\"ActiveXObject\"in e)&&((o.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),weixin:n(\"micromessenger\")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios=\"ios\"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if(\"function\"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;o<e.length&&!t.call(e[o],o,e[o]);o++);return n},n.prototype.sort=function(e,t,o){var n=JSON.parse(JSON.stringify(e||[]));return t?(n.sort(function(e,o){var n=/^-?\\d+$/,r=e[t],i=o[t];return n.test(r)&&(r=parseFloat(r)),n.test(i)&&(i=parseFloat(i)),r&&!i?1:!r&&i?-1:r>i?1:r<i?-1:0}),o&&n.reverse(),n):n},n.prototype.stope=function(t){t=t||e.event;try{t.stopPropagation()}catch(o){t.cancelBubble=!0}},n.prototype.onevent=function(e,t,o){return\"string\"!=typeof e||\"function\"!=typeof o?this:n.event(e,t,null,o)},n.prototype.event=n.event=function(e,t,n,r){var i=this,a=null,u=t.match(/\\((.*)\\)$/)||[],l=(e+\".\"+t).replace(u[0],\"\"),s=u[1]||\"\",c=function(e,t){var o=t&&t.call(i,n);o===!1&&null===a&&(a=!1)};return r?(o.event[l]=o.event[l]||{},o.event[l][s]=[r],this):(layui.each(o.event[l],function(e,t){return\"{*}\"===s?void layui.each(t,c):(\"\"===e&&layui.each(t,c),void(s&&e===s&&layui.each(t,c)))}),a)},e.layui=new n}(window);"
  },
  {
    "path": "sdk/易语言/ui/service.html",
    "content": "<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <title></title>\r\n    <meta charset=\"UTF-8\">\r\n\r\n    <style>\r\n        html, body {\r\n            height: 100%;\r\n            background: url(\"image/Snipaste_2019-01-15_20-11-48.png\") no-repeat;\r\n            overflow-x: hidden;\r\n            background-size: 100% 100%;\r\n        }\r\n        a {\r\n            text-decoration: none\r\n        }\r\n    </style>\r\n    <style>\r\n        ul {\r\n            list-style: none;\r\n        }\r\n        ul, ul li {\r\n            padding: 0px;\r\n            margin: 0px;\r\n        }\r\n        .ico-font {\r\n            font-family: \"Webdings\";\r\n            color: #B9B9B9;\r\n        }\r\n        .win-title {\r\n            height: 40px;\r\n            background: #222;\r\n            line-height: 40px;\r\n        }\r\n        .win-title .title-name {\r\n            float: left;\r\n            color: #fff;\r\n            padding-left: 10px;\r\n        }\r\n        .win-title .button-group {\r\n            float: right;\r\n        }\r\n        .win-title .button-group ul li {\r\n            float: left;\r\n            width: 30px;\r\n            height: 30px;\r\n            line-height: 30px;\r\n            margin: 5px;\r\n            border-radius: 50%;\r\n            text-align: center;\r\n            cursor: pointer;\r\n            background: #393D49 ;\r\n        }\r\n        .win-title .button-group ul li:hover {\r\n            background: #d9534f;\r\n        }\r\n    </style>\r\n\r\n    <link rel=\"stylesheet\" href=\"bootstrap/css/bootstrap.min.css\" media=\"all\">\r\n    <link rel=\"stylesheet\" href=\"layui/css/layui.css\" media=\"all\">\r\n    <link rel=\"stylesheet\" href=\"jquery/jquery.mloading.css\" media=\"all\">\r\n    <script src=\"jquery/jquery.min.js\" charset=\"utf-8\"></script>\r\n    <script src=\"bootstrap/js/bootstrap.min.js\"></script>\r\n    <script src=\"layui/layui.js\" charset=\"utf-8\"></script>\r\n    <script src=\"jquery/jquery.mloading.js\" charset=\"utf-8\"></script>\r\n    <script src=\"common/alert.js\" charset=\"utf-8\"></script>\r\n    <script src=\"common/choice.js\" charset=\"utf-8\"></script>\r\n\r\n</head>\r\n<body>\r\n\r\n<div style=\"display: flex;flex-direction: column\">\r\n\r\n    <div class=\"win-title\">\r\n        <div class=\"title-name\">\r\n            <span class=\"layui-badge-dot\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-orange\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-green\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-cyan\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-blue\"></span>\r\n            <span id=\"softTitle\" style=\"padding-left: 10px\"></span>\r\n        </div>\r\n        <div class=\"button-group\">\r\n            <ul>\r\n                <li class=\"ico-font\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"软件留言\"\r\n                    onclick=\"add(0)\" style=\"\">\r\n                    <i class=\"layui-icon layui-icon-edit\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"加软件更新群\"\r\n                    onclick=\"add(1)\" style=\"\">\r\n                    <i class=\"layui-icon layui-icon-user\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"add(2)\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"加作者微信\"\r\n                    style=\"\">\r\n                    <i class=\"layui-icon layui-icon-login-wechat\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"add(3)\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"加作者QQ\">\r\n                    <i class=\"layui-icon layui-icon-login-qq\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"add(4)\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"软件设置\"\r\n                    style=\"margin-right: 20px\">\r\n                    <i class=\"layui-icon layui-icon-set-fill\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"winMin()\">0</li>\r\n                <li class=\"ico-font\" onclick=\"winMax()\">1</li>\r\n                <li class=\"ico-font\" onclick=\"winClose()\">r</li>\r\n            </ul>\r\n        </div>\r\n    </div>\r\n\r\n    <div style=\"flex: auto\">\r\n\r\n        <div class=\"row\" style=\"height: 100%;margin-right: 0px\">\r\n\r\n            <div class=\"col-xs-5 col-sm-5 col-md-5 col-lg-5\" style=\"height: 100%;padding-right: 0px;text-align: center\">\r\n                <div id=\"myCarousel\" class=\"carousel slide\">\r\n                    <!-- 轮播（Carousel）指标 -->\r\n                    <ol class=\"carousel-indicators\" id=\"carOl\">\r\n                    </ol>\r\n                    <!-- 轮播（Carousel）项目 -->\r\n                    <div class=\"carousel-inner\" id=\"carItem\">\r\n                    </div>\r\n                    <!-- 轮播（Carousel）导航 -->\r\n                    <a class=\"left carousel-control\" href=\"#myCarousel\" role=\"button\" data-slide=\"prev\">\r\n                        <span class=\"glyphicon glyphicon-chevron-left\" aria-hidden=\"true\"></span>\r\n                        <span class=\"sr-only\">Previous</span>\r\n                    </a>\r\n                    <a class=\"right carousel-control\" href=\"#myCarousel\" role=\"button\" data-slide=\"next\">\r\n                        <span class=\"glyphicon glyphicon-chevron-right\" aria-hidden=\"true\"></span>\r\n                        <span class=\"sr-only\">Next</span>\r\n                    </a>\r\n                </div>\r\n\r\n            </div>\r\n\r\n            <div class=\"col-xs-7 col-sm-7 col-md-7 col-lg-7\" style=\"height: 100%\">\r\n\r\n                <fieldset class=\"layui-elem-field site-demo-button\" style=\"margin-top: 10px;\">\r\n                    <legend>公告</legend>\r\n                    <div>\r\n                        <textarea id=\"notice\" placeholder=\"\" class=\"layui-textarea\"></textarea>\r\n                    </div>\r\n                </fieldset>\r\n\r\n                <div class=\"layui-tab layui-tab-brief\">\r\n                    <ul class=\"layui-tab-title\">\r\n                        <li class=\"layui-this\">登陆</li>\r\n                        <li>注册</li>\r\n                        <li>改密</li>\r\n                        <li id=\"softService\" style=\"display: none\">充值</li>\r\n                        <li id=\"changeStrategy\" style=\"display: none\">绑定机器</li>\r\n                    </ul>\r\n                    <div class=\"layui-tab-content\" style=\"height: 100px;\">\r\n\r\n                        <div class=\"layui-tab-item layui-show\">\r\n                            <!--登陆-->\r\n                            <form class=\"layui-form\" action=\"\" lay-filter=\"loginV\">\r\n\r\n                                <div class=\"layui-form\">\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">用户名</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"username\"\r\n                                                   type=\"text\" lay-verify=\"username\" autocomplete=\"off\"\r\n                                                   placeholder=\"请输入用户名\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">密码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"password\"\r\n                                                   lay-verify=\"password\"\r\n                                                   type=\"password\" placeholder=\"请输入密码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input type=\"checkbox\" name=\"remember\" lay-skin=\"primary\" title=\"记住密码\">\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <button lay-submit=\"\" lay-filter=\"loginSubmit\"\r\n                                                    class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                                                立即提交\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                            </form>\r\n                            <!--登陆 end-->\r\n                        </div>\r\n\r\n                        <div class=\"layui-tab-item\">\r\n\r\n                            <!--注册-->\r\n                            <textarea id=\"registerCloseMsg\" placeholder=\"\" class=\"layui-textarea\"\r\n                                      style=\"height: 250px;display: none\">\r\n                    </textarea>\r\n\r\n                            <form id=\"register\" class=\"layui-form\" action=\"\" style=\"display: block\">\r\n\r\n                                <div class=\"layui-form\">\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">用户名</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"username\"\r\n                                                   type=\"text\" lay-verify=\"username\" autocomplete=\"off\"\r\n                                                   placeholder=\"请输入用户名\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">密码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"password\"\r\n                                                   lay-verify=\"password\"\r\n                                                   type=\"password\" placeholder=\"请输入密码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">安全码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"securityCode\"\r\n                                                   lay-verify=\"securityCode\"\r\n                                                   placeholder=\"此安全码用于修改密码时用到\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">QQ</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"qq\"\r\n                                                   lay-verify=\"qq\"\r\n                                                   placeholder=\"请输入QQ\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">姓名</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"name\"\r\n                                                   lay-verify=\"name\"\r\n                                                   placeholder=\"请输入姓名\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <img id=\"vcode\" width=\"150px\" height=\"70px\"\r\n                                                 style=\"border: 1px solid #b2b2b2\">\r\n                                            <a onclick=\"getVCode()\"\r\n                                               class=\"layui-btn layui-btn-normal layui-btn-xs layui-btn-radius\">\r\n                                                获取验证码\r\n                                            </a>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">验证码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"vc\"\r\n                                                   lay-verify=\"vc\"\r\n                                                   placeholder=\"请输入验证码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n\r\n\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <button lay-submit=\"\" lay-filter=\"registerSubmit\"\r\n                                                    class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                                                立即提交\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <br><br>\r\n                            </form>\r\n\r\n                            <!--注册 end-->\r\n\r\n                        </div>\r\n                        <div class=\"layui-tab-item\">\r\n\r\n                            <!--改密-->\r\n                            <form class=\"layui-form\" action=\"\">\r\n\r\n                                <div class=\"layui-form\">\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">用户名</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"username\"\r\n                                                   type=\"text\" lay-verify=\"username\" autocomplete=\"off\"\r\n                                                   placeholder=\"请输入用户名\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">安全码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"securityCode\"\r\n                                                   lay-verify=\"securityCode\"\r\n                                                   placeholder=\"请输入安全码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">新密码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"password\"\r\n                                                   lay-verify=\"password\"\r\n                                                   type=\"password\" placeholder=\"请输入密码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <button lay-submit=\"\" lay-filter=\"updatePasswordSubmit\"\r\n                                                    class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                                                立即提交\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                            </form>\r\n                            <!--改密 end-->\r\n\r\n                        </div>\r\n                        <div class=\"layui-tab-item\">\r\n\r\n                            <!--充值-->\r\n                            <form class=\"layui-form\" action=\"\">\r\n\r\n                                <div class=\"layui-form\">\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">用户名</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"username\"\r\n                                                   type=\"text\" lay-verify=\"username\" autocomplete=\"off\"\r\n                                                   placeholder=\"请输入用户名\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">密码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"password\"\r\n                                                   lay-verify=\"password\"\r\n                                                   type=\"password\" placeholder=\"请输入密码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">卡密</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"card\"\r\n                                                   lay-verify=\"card\"\r\n                                                   placeholder=\"请输入卡密\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <button lay-submit=\"\" lay-filter=\"cardSubmit\"\r\n                                                    class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                                                立即提交\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                            </form>\r\n                            <!--充值 end-->\r\n\r\n                        </div>\r\n                        <div class=\"layui-tab-item\">\r\n\r\n                            <!--绑定机器-->\r\n                            <form class=\"layui-form\" action=\"\">\r\n\r\n                                <div class=\"layui-form\">\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">用户名</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"username\"\r\n                                                   type=\"text\" lay-verify=\"username\" autocomplete=\"off\"\r\n                                                   placeholder=\"请输入用户名\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"layui-form-item\">\r\n                                        <label class=\"layui-form-label\">密码</label>\r\n                                        <div class=\"layui-input-block\">\r\n                                            <input name=\"password\"\r\n                                                   lay-verify=\"password\"\r\n                                                   type=\"password\" placeholder=\"请输入密码\"\r\n                                                   autocomplete=\"off\" class=\"layui-input\">\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"layui-form-item\">\r\n                                        <div class=\"layui-input-block\">\r\n                                            <button lay-submit=\"\" lay-filter=\"codeSubmit\"\r\n                                                    class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                                                立即提交\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                            </form>\r\n                            <!--绑定机器 end-->\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n\r\n    </div>\r\n\r\n</div>\r\n\r\n\r\n<template id=\"setting\">\r\n\r\n    <div style=\"width: 100%;height: 100%\" class=\"layui-form\" action=\"\" lay-filter=\"setting\">\r\n\r\n        <div class=\"layui-form-item\">\r\n            <label class=\"layui-form-label\">创建桌面快捷方式</label>\r\n            <div class=\"layui-input-block\">\r\n                <input type=\"checkbox\" name=\"speedy\" lay-skin=\"switch\" lay-filter=\"speedy\" lay-text=\"开启|关闭\">\r\n            </div>\r\n        </div>\r\n\r\n        Orange Verify网络验证提供技术支持\r\n        <br>\r\n        开源地址：\r\n        <br>\r\n        https://gitee.com/orangeenterprise/verify\r\n\r\n    </div>\r\n\r\n</template>\r\n<template id=\"smsg\">\r\n    <div style=\"width: 100%;height: 100%\" >\r\n        <!--提交留言-->\r\n        <form class=\"layui-form\" action=\"\" style=\"padding-top: 10px\">\r\n\r\n            <div class=\"layui-form\">\r\n                <div class=\"layui-form-item\">\r\n                    <label class=\"layui-form-label\">QQ</label>\r\n                    <div class=\"layui-input-block\">\r\n                        <input name=\"qq\"\r\n                               style=\"width: 300px\"\r\n                               type=\"text\" lay-verify=\"qq\" autocomplete=\"off\"\r\n                               placeholder=\"请输入QQ号\" class=\"layui-input\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"layui-form-item\">\r\n                    <label class=\"layui-form-label\">内容</label>\r\n                    <div class=\"layui-input-block\">\r\n                        <textarea\r\n                                style=\"width: 300px\"\r\n                                lay-verify=\"msg\"\r\n                                placeholder=\"请输入留言内容\" class=\"layui-textarea\" name=\"msg\"></textarea>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"layui-form-item\">\r\n                    <div class=\"layui-input-block\">\r\n                        <button lay-submit=\"\" lay-filter=\"msgSubmit\"\r\n                                class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                            立即提交\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n        </form>\r\n        <!--提交留言 end-->\r\n    </div>\r\n</template>\r\n\r\n<script src=\"common/carousel.js\" charset=\"utf-8\"></script>\r\n<script>\r\n\r\n    layui.use('element', function () {\r\n        var $ = layui.jquery\r\n            , element = layui.element; //Tab的切换功能，切换事件监听等，需要依赖element模块\r\n    });\r\n\r\n    $('#myCarousel').carousel({\r\n        interval: 3500\r\n    })\r\n\r\n</script>\r\n\r\n\r\n<script>\r\n\r\n    function init(data) {\r\n        $(\"#softTitle\").text(data.title);\r\n\r\n        if (data.register == \"true\") {\r\n            $(\"#register\").show();\r\n        } else if (data.register == \"false\") {\r\n            $(\"#registerCloseMsg\").show();\r\n            $(\"#registerCloseMsg\").val(data.registerCloseMsg.replace(/<br>/g, \"\\n\"));\r\n        }\r\n\r\n        if (data.softService == \"false\") {\r\n            $(\"#softService\").hide();\r\n        } else if (data.softService == \"true\") {\r\n            $(\"#softService\").show();\r\n        }\r\n        if (data.changeStrategy == \"false\") {\r\n            $(\"#changeStrategy\").hide();\r\n        } else if (data.changeStrategy == \"true\") {\r\n            $(\"#changeStrategy\").show();\r\n        }\r\n\r\n        $(\"#notice\").val(data.notice.replace(/<br>/g, \"\\n\"));\r\n        var check = false;\r\n        if (data.check == \"真\") {\r\n            check = true;\r\n        }\r\n\r\n        speedyC = false;\r\n        if (data.speedy == \"true\") {\r\n            speedyC = true;\r\n        }\r\n\r\n        //表单初始赋值\r\n        layui.use(['form'], function () {\r\n            var form = layui.form;\r\n            form.val('loginV', {\r\n                \"username\": data.username\r\n                , \"password\": data.password\r\n                , \"remember\": check\r\n            });\r\n        });\r\n    }\r\n\r\n</script>\r\n\r\n\r\n<script>\r\n    //登陆form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            username: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '用户名长度为5到10个字符';\r\n                }\r\n            },\r\n            password: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '密码长度为5到10个字符';\r\n                }\r\n            },\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(loginSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callLogin(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n</script>\r\n<script>\r\n    //改密form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            username: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '用户名长度为5到10个字符';\r\n                }\r\n            },\r\n            password: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '密码长度为5到10个字符';\r\n                }\r\n            },\r\n            securityCode: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '安全码长度为5到10个字符';\r\n                }\r\n            }\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(updatePasswordSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callUpdatePassword(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n</script>\r\n<script>\r\n    //充值form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            username: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '用户名长度为5到10个字符';\r\n                }\r\n            },\r\n            password: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '密码长度为5到10个字符';\r\n                }\r\n            },\r\n            card: function (value) {\r\n                if (value.length < 1) {\r\n                    return '卡密不能为空';\r\n                }\r\n            }\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(cardSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callCard(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n</script>\r\n<script>\r\n    //绑定机器form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            username: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '用户名长度为5到10个字符';\r\n                }\r\n            },\r\n            password: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '密码长度为5到10个字符';\r\n                }\r\n            },\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(codeSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callCode(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n</script>\r\n<script>\r\n    function getVCode() {\r\n        loadingStart();\r\n        setTimeout(function () {\r\n            callVCode();\r\n            loadingClose();\r\n        }, 200);\r\n    }\r\n\r\n    function setVCode(data) {\r\n        $(\"#vcode\").attr(\"src\", \"data:image/jpeg;base64,\" + data);\r\n    }\r\n\r\n    //注册form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            username: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '用户名长度为5到10个字符';\r\n                }\r\n            },\r\n            password: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '密码长度为5到10个字符';\r\n                }\r\n            },\r\n            securityCode: function (value) {\r\n                if (value.length < 5 || value.length > 10) {\r\n                    return '安全码长度为5到10个字符';\r\n                }\r\n            },\r\n            name: function (value) {\r\n                if (value.length < 1 || value.length > 10) {\r\n                    return '姓名长度为1到10个字符';\r\n                }\r\n            },\r\n            qq: function (value) {\r\n                if (value.length < 1 || value.length > 10) {\r\n                    return 'qq长度为1到10个字符';\r\n                }\r\n            },\r\n            vc: function (value) {\r\n                if (value.length != 6) {\r\n                    return '验证码长度为6个字符';\r\n                }\r\n            }\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(registerSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callRegister(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n</script>\r\n<script>\r\n\r\n    //提交留言form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            msg: function (value) {\r\n                if (value.length < 1 || value.length > 255) {\r\n                    return '留言内容长度为1到255个字符';\r\n                }\r\n            },\r\n            qq: function (value) {\r\n                if (value.length < 1 || value.length > 10) {\r\n                    return 'qq长度为1到10个字符';\r\n                }\r\n            },\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(msgSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callMsg(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n\r\n</script>\r\n\r\n<script>loadingClose();</script>\r\n\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "sdk/易语言/ui/update.html",
    "content": "<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <title></title>\r\n    <meta charset=\"UTF-8\">\r\n\r\n    <style>\r\n        html, body {\r\n            height: 100%;\r\n            background: url(\"image/Snipaste_2019-01-15_20-11-48.png\") no-repeat;\r\n            overflow-x: hidden;\r\n            background-size: 100% 100%;\r\n        }\r\n        a {\r\n            text-decoration: none\r\n        }\r\n    </style>\r\n    <style>\r\n        ul {\r\n            list-style: none;\r\n        }\r\n        ul, ul li {\r\n            padding: 0px;\r\n            margin: 0px;\r\n        }\r\n        .ico-font {\r\n            font-family: \"Webdings\";\r\n            color: #B9B9B9;\r\n        }\r\n        .win-title {\r\n            height: 40px;\r\n            background: #222;\r\n            line-height: 40px;\r\n        }\r\n        .win-title .title-name {\r\n            float: left;\r\n            color: #fff;\r\n            padding-left: 10px;\r\n        }\r\n        .win-title .button-group {\r\n            float: right;\r\n        }\r\n        .win-title .button-group ul li {\r\n            float: left;\r\n            width: 30px;\r\n            height: 30px;\r\n            line-height: 30px;\r\n            margin: 5px;\r\n            border-radius: 50%;\r\n            text-align: center;\r\n            cursor: pointer;\r\n            background: #393D49 ;\r\n        }\r\n        .win-title .button-group ul li:hover {\r\n            background: #d9534f;\r\n        }\r\n    </style>\r\n\r\n    <link rel=\"stylesheet\" href=\"bootstrap/css/bootstrap.min.css\" media=\"all\">\r\n    <link rel=\"stylesheet\" href=\"layui/css/layui.css\" media=\"all\">\r\n    <link rel=\"stylesheet\" href=\"jquery/jquery.mloading.css\" media=\"all\">\r\n    <script src=\"jquery/jquery.min.js\" charset=\"utf-8\"></script>\r\n    <script src=\"bootstrap/js/bootstrap.min.js\"></script>\r\n    <script src=\"layui/layui.js\" charset=\"utf-8\"></script>\r\n    <script src=\"jquery/jquery.mloading.js\" charset=\"utf-8\"></script>\r\n    <script src=\"common/alert.js\" charset=\"utf-8\"></script>\r\n    <script src=\"common/choice.js\" charset=\"utf-8\"></script>\r\n\r\n</head>\r\n<body>\r\n\r\n<div style=\"display: flex;flex-direction: column\">\r\n\r\n    <div class=\"win-title\">\r\n        <div class=\"title-name\">\r\n            <span class=\"layui-badge-dot\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-orange\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-green\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-cyan\"></span>\r\n            <span class=\"layui-badge-dot layui-bg-blue\"></span>\r\n            <span id=\"softTitle\" style=\"padding-left: 10px\"></span>\r\n        </div>\r\n        <div class=\"button-group\">\r\n            <ul>\r\n                <li class=\"ico-font\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"软件留言\"\r\n                    onclick=\"add(0)\" style=\"\">\r\n                    <i class=\"layui-icon layui-icon-edit\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"加软件更新群\"\r\n                    onclick=\"add(1)\" style=\"\">\r\n                    <i class=\"layui-icon layui-icon-user\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"add(2)\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"加作者微信\"\r\n                    style=\"\">\r\n                    <i class=\"layui-icon layui-icon-login-wechat\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"add(3)\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"加作者QQ\">\r\n                    <i class=\"layui-icon layui-icon-login-qq\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"add(4)\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"软件设置\"\r\n                    style=\"margin-right: 20px\">\r\n                    <i class=\"layui-icon layui-icon-set-fill\"></i>\r\n                </li>\r\n                <li class=\"ico-font\" onclick=\"winMin()\">0</li>\r\n                <li class=\"ico-font\" onclick=\"winMax()\">1</li>\r\n                <li class=\"ico-font\" onclick=\"winClose()\">r</li>\r\n            </ul>\r\n        </div>\r\n    </div>\r\n\r\n    <div style=\"flex: auto\">\r\n\r\n        <div class=\"row\" style=\"height: 100%;margin-right: 0px\">\r\n\r\n            <div class=\"col-xs-5 col-sm-5 col-md-5 col-lg-5\" style=\"height: 100%;padding-right: 0px;text-align: center\">\r\n                <div id=\"myCarousel\" class=\"carousel slide\">\r\n                    <!-- 轮播（Carousel）指标 -->\r\n                    <ol class=\"carousel-indicators\" id=\"carOl\">\r\n                    </ol>\r\n                    <!-- 轮播（Carousel）项目 -->\r\n                    <div class=\"carousel-inner\" id=\"carItem\">\r\n                    </div>\r\n                    <!-- 轮播（Carousel）导航 -->\r\n                    <a class=\"left carousel-control\" href=\"#myCarousel\" role=\"button\" data-slide=\"prev\">\r\n                        <span class=\"glyphicon glyphicon-chevron-left\" aria-hidden=\"true\"></span>\r\n                        <span class=\"sr-only\">Previous</span>\r\n                    </a>\r\n                    <a class=\"right carousel-control\" href=\"#myCarousel\" role=\"button\" data-slide=\"next\">\r\n                        <span class=\"glyphicon glyphicon-chevron-right\" aria-hidden=\"true\"></span>\r\n                        <span class=\"sr-only\">Next</span>\r\n                    </a>\r\n                </div>\r\n\r\n            </div>\r\n\r\n            <div class=\"col-xs-7 col-sm-7 col-md-7 col-lg-7\" style=\"height: 100%\">\r\n\r\n                <fieldset class=\"layui-elem-field site-demo-button\" style=\"margin-top: 10px;\">\r\n                    <legend>最新版本</legend>\r\n                    <div>\r\n                        <input id=\"newVersions\" placeholder=\"\" class=\"layui-input\">\r\n                        </input>\r\n                    </div>\r\n                </fieldset>\r\n                <fieldset class=\"layui-elem-field site-demo-button\" style=\"margin-top: 10px;\">\r\n                    <legend>更新公告</legend>\r\n                    <div>\r\n                        <textarea id=\"notice\" placeholder=\"\" class=\"layui-textarea\" style=\"height: 200px\">\r\n                        </textarea>\r\n                    </div>\r\n                </fieldset>\r\n                <fieldset class=\"layui-elem-field site-demo-button\" style=\"margin-top: 10px;text-align: center;margin-bottom: 10px\">\r\n                    <legend>下载地址</legend>\r\n                    <div>\r\n                        <input id=\"updateUrl\" placeholder=\"\" class=\"layui-input\">\r\n                        </input>\r\n                        <button onclick=\"copyUrl()\" class=\"layui-btn layui-btn\">\r\n                            复制\r\n                        </button>\r\n                    </div>\r\n                </fieldset>\r\n\r\n\r\n\r\n\r\n            </div>\r\n        </div>\r\n\r\n    </div>\r\n\r\n</div>\r\n\r\n\r\n<template id=\"setting\">\r\n\r\n    <div style=\"width: 100%;height: 100%\" class=\"layui-form\" action=\"\" lay-filter=\"setting\">\r\n\r\n        <div class=\"layui-form-item\">\r\n            <label class=\"layui-form-label\">创建桌面快捷方式</label>\r\n            <div class=\"layui-input-block\">\r\n                <input type=\"checkbox\" name=\"speedy\" lay-skin=\"switch\" lay-filter=\"speedy\" lay-text=\"开启|关闭\">\r\n            </div>\r\n        </div>\r\n\r\n        Orange Verify网络验证提供技术支持\r\n        <br>\r\n        开源地址：\r\n        <br>\r\n        https://gitee.com/orangeenterprise/verify\r\n\r\n    </div>\r\n\r\n</template>\r\n<template id=\"smsg\">\r\n    <div style=\"width: 100%;height: 100%\" >\r\n        <!--提交留言-->\r\n        <form class=\"layui-form\" action=\"\" style=\"padding-top: 10px\">\r\n\r\n            <div class=\"layui-form\">\r\n                <div class=\"layui-form-item\">\r\n                    <label class=\"layui-form-label\">QQ</label>\r\n                    <div class=\"layui-input-block\">\r\n                        <input name=\"qq\"\r\n                               style=\"width: 300px\"\r\n                               type=\"text\" lay-verify=\"qq\" autocomplete=\"off\"\r\n                               placeholder=\"请输入QQ号\" class=\"layui-input\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"layui-form-item\">\r\n                    <label class=\"layui-form-label\">内容</label>\r\n                    <div class=\"layui-input-block\">\r\n                        <textarea\r\n                                style=\"width: 300px\"\r\n                                lay-verify=\"msg\"\r\n                                placeholder=\"请输入留言内容\" class=\"layui-textarea\" name=\"msg\"></textarea>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"layui-form-item\">\r\n                    <div class=\"layui-input-block\">\r\n                        <button lay-submit=\"\" lay-filter=\"msgSubmit\"\r\n                                class=\"layui-btn-normal layui-btn layui-btn-radius\">\r\n                            立即提交\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n        </form>\r\n        <!--提交留言 end-->\r\n    </div>\r\n</template>\r\n\r\n<script src=\"common/carousel.js\" charset=\"utf-8\"></script>\r\n<script>\r\n\r\n    layui.use('element', function () {\r\n        var $ = layui.jquery\r\n            , element = layui.element; //Tab的切换功能，切换事件监听等，需要依赖element模块\r\n    });\r\n\r\n    $('#myCarousel').carousel({\r\n        interval: 3500\r\n    })\r\n\r\n</script>\r\n\r\n\r\n<script>\r\n\r\n    function init(data) {\r\n        $(\"#softTitle\").text(data.title);\r\n        $(\"#newVersions\").val(data.versions.replace(/<br>/g,\"\\n\"));\r\n        $(\"#notice\").val(data.notice.replace(/<br>/g,\"\\n\"));\r\n        $(\"#updateUrl\").val(data.updateUrl.replace(/<br>/g,\"\\n\"));\r\n    }\r\n\r\n    function copyUrl() {\r\n        callCopy();\r\n    }\r\n\r\n</script>\r\n\r\n\r\n<script>\r\n\r\n    //提交留言form\r\n    layui.use(['form'], function () {\r\n        var form = layui.form\r\n            , layer = layui.layer;\r\n\r\n        //自定义验证规则\r\n        form.verify({\r\n            msg: function (value) {\r\n                if (value.length < 5 || value.length > 255) {\r\n                    return '留言内容长度为1到255个字符';\r\n                }\r\n            },\r\n            qq: function (value) {\r\n                if (value.length < 1 || value.length > 10) {\r\n                    return 'qq长度为1到10个字符';\r\n                }\r\n            },\r\n        });\r\n\r\n        //监听提交\r\n        form.on('submit(msgSubmit)', function (data) {\r\n            loadingStart();\r\n            setTimeout(function () {\r\n                callMsg(JSON.stringify(data.field));\r\n                loadingClose();\r\n            }, 200);\r\n            return false;\r\n        });\r\n    });\r\n\r\n</script>\r\n\r\n<script>loadingClose();</script>\r\n\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "verifymaster.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"JAVA_MODULE\" version=\"4\" />"
  }
]