From 1755cb8e72b071420f6ec4b11fef4e9e3b996768 Mon Sep 17 00:00:00 2001 From: JIWOO Date: Wed, 21 Aug 2024 10:30:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9A=B0=20-=20=EB=89=B4?= =?UTF-8?q?=EC=8A=A4=EB=A0=88=ED=84=B0=20=EC=9E=91=EC=97=85,=20=EC=9B=B9?= =?UTF-8?q?=EB=85=B8=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gtm/seedfile/SeedFileController.java | 433 ++++++ .../seed/com/gtm/util/CommonsCompress.java | 55 + src/main/java/seed/com/gtm/util/JSPUtil.java | 374 ++++++ .../WEB-INF/jsp/_extra/gtm/board/write.jsp | 4 +- .../WEB-INF/jsp/layout/seedAdminLayout.jsp | 128 +- .../webapp/editor/emoticon/Ambivalent.png | Bin 0 -> 701 bytes src/main/webapp/editor/emoticon/Angel.png | Bin 0 -> 1306 bytes src/main/webapp/editor/emoticon/Angry.png | Bin 0 -> 1394 bytes src/main/webapp/editor/emoticon/Blush.png | Bin 0 -> 720 bytes src/main/webapp/editor/emoticon/Confused.png | Bin 0 -> 4178 bytes src/main/webapp/editor/emoticon/Crazy.png | Bin 0 -> 852 bytes src/main/webapp/editor/emoticon/Crying.png | Bin 0 -> 722 bytes src/main/webapp/editor/emoticon/Frown.png | Bin 0 -> 655 bytes src/main/webapp/editor/emoticon/Gasp.png | Bin 0 -> 786 bytes src/main/webapp/editor/emoticon/Grin.png | Bin 0 -> 769 bytes src/main/webapp/editor/emoticon/Heart.png | Bin 0 -> 4244 bytes src/main/webapp/editor/emoticon/Hot.png | Bin 0 -> 4166 bytes src/main/webapp/editor/emoticon/Innoncent.png | Bin 0 -> 4129 bytes src/main/webapp/editor/emoticon/Kiss.png | Bin 0 -> 735 bytes src/main/webapp/editor/emoticon/LargeGasp.png | Bin 0 -> 4133 bytes src/main/webapp/editor/emoticon/Laugh.png | Bin 0 -> 754 bytes .../webapp/editor/emoticon/Money-mouth.png | Bin 0 -> 777 bytes src/main/webapp/editor/emoticon/Naughty.png | Bin 0 -> 889 bytes src/main/webapp/editor/emoticon/Nerd.png | Bin 0 -> 765 bytes src/main/webapp/editor/emoticon/Pirate.png | Bin 0 -> 918 bytes src/main/webapp/editor/emoticon/Sarcastic.png | Bin 0 -> 799 bytes src/main/webapp/editor/emoticon/Sealed.png | Bin 0 -> 734 bytes src/main/webapp/editor/emoticon/Sick.png | Bin 0 -> 4355 bytes src/main/webapp/editor/emoticon/Smile.png | Bin 0 -> 700 bytes src/main/webapp/editor/emoticon/Sweat.png | Bin 0 -> 786 bytes .../webapp/editor/emoticon/ThumbsDown.png | Bin 0 -> 4067 bytes src/main/webapp/editor/emoticon/ThumbsUp.png | Bin 0 -> 669 bytes src/main/webapp/editor/emoticon/Tongue.png | Bin 0 -> 703 bytes src/main/webapp/editor/emoticon/Undecided.png | Bin 0 -> 4088 bytes src/main/webapp/editor/emoticon/VeryAngry.png | Bin 0 -> 4195 bytes src/main/webapp/editor/emoticon/Wink.png | Bin 0 -> 688 bytes src/main/webapp/editor/emoticon/Yum.png | Bin 0 -> 681 bytes src/main/webapp/editor/emoticon/ohnoes.png | Bin 0 -> 816 bytes src/main/webapp/editor/icon/add.png | Bin 0 -> 733 bytes src/main/webapp/editor/icon/arrow_refresh.png | Bin 0 -> 685 bytes src/main/webapp/editor/icon/arrow_updown.png | Bin 0 -> 1340 bytes src/main/webapp/editor/icon/attach.png | Bin 0 -> 391 bytes src/main/webapp/editor/icon/backcolor.png | Bin 0 -> 892 bytes src/main/webapp/editor/icon/bold.png | Bin 0 -> 304 bytes src/main/webapp/editor/icon/brick.png | Bin 0 -> 452 bytes src/main/webapp/editor/icon/bricks.png | Bin 0 -> 825 bytes .../editor/icon/btn_apply_img_property.png | Bin 0 -> 3143 bytes src/main/webapp/editor/icon/btn_close.png | Bin 0 -> 1389 bytes src/main/webapp/editor/icon/btn_close2.png | Bin 0 -> 1220 bytes .../webapp/editor/icon/btn_createlink.png | Bin 0 -> 2481 bytes src/main/webapp/editor/icon/btn_delete.png | Bin 0 -> 2800 bytes src/main/webapp/editor/icon/btn_down.gif | Bin 0 -> 1113 bytes .../webapp/editor/icon/btn_insertimages.png | Bin 0 -> 2958 bytes src/main/webapp/editor/icon/btn_up.gif | Bin 0 -> 1105 bytes src/main/webapp/editor/icon/btn_upload.png | Bin 0 -> 2322 bytes .../webapp/editor/icon/btn_upload_down.png | Bin 0 -> 2310 bytes src/main/webapp/editor/icon/btn_upload_up.png | Bin 0 -> 2303 bytes src/main/webapp/editor/icon/cell_property.png | Bin 0 -> 716 bytes src/main/webapp/editor/icon/closeX.gif | Bin 0 -> 75 bytes .../webapp/editor/icon/color_selector.gif | Bin 0 -> 1099 bytes .../webapp/editor/icon/color_selector.png | Bin 0 -> 932 bytes src/main/webapp/editor/icon/context_menu.png | Bin 0 -> 476 bytes src/main/webapp/editor/icon/createlink.png | Bin 0 -> 343 bytes src/main/webapp/editor/icon/decrease.png | Bin 0 -> 581 bytes src/main/webapp/editor/icon/delete.png | Bin 0 -> 715 bytes src/main/webapp/editor/icon/design.png | Bin 0 -> 704 bytes src/main/webapp/editor/icon/disk.png | Bin 0 -> 620 bytes src/main/webapp/editor/icon/email.png | Bin 0 -> 641 bytes src/main/webapp/editor/icon/emoticon.png | Bin 0 -> 769 bytes src/main/webapp/editor/icon/emoticon2.png | Bin 0 -> 1667 bytes src/main/webapp/editor/icon/file_tree.png | Bin 0 -> 1104 bytes src/main/webapp/editor/icon/folder.png | Bin 0 -> 537 bytes src/main/webapp/editor/icon/folder_add.png | Bin 0 -> 668 bytes src/main/webapp/editor/icon/folder_delete.png | Bin 0 -> 666 bytes .../webapp/editor/icon/folder_magnify.png | Bin 0 -> 686 bytes src/main/webapp/editor/icon/font.png | Bin 0 -> 567 bytes src/main/webapp/editor/icon/fontbgdolor.png | Bin 0 -> 1107 bytes src/main/webapp/editor/icon/fontsize.png | Bin 0 -> 260 bytes src/main/webapp/editor/icon/forecolor.png | Bin 0 -> 209 bytes .../webapp/editor/icon/ftv2folderclosed.gif | Bin 0 -> 402 bytes .../webapp/editor/icon/ftv2folderopen.gif | Bin 0 -> 389 bytes src/main/webapp/editor/icon/ftv2lastnode.gif | Bin 0 -> 65 bytes src/main/webapp/editor/icon/ftv2node.gif | Bin 0 -> 70 bytes src/main/webapp/editor/icon/fullscreen.png | Bin 0 -> 594 bytes src/main/webapp/editor/icon/hr.png | Bin 0 -> 520 bytes src/main/webapp/editor/icon/image.png | Bin 0 -> 606 bytes src/main/webapp/editor/icon/image_.png | Bin 0 -> 516 bytes src/main/webapp/editor/icon/image_add.png | Bin 0 -> 653 bytes src/main/webapp/editor/icon/image_edit.png | Bin 0 -> 783 bytes src/main/webapp/editor/icon/image_link.png | Bin 0 -> 835 bytes .../webapp/editor/icon/image_property.png | Bin 0 -> 783 bytes src/main/webapp/editor/icon/image_search.png | Bin 0 -> 957 bytes src/main/webapp/editor/icon/image_upload.png | Bin 0 -> 755 bytes src/main/webapp/editor/icon/imagecenter.png | Bin 0 -> 704 bytes src/main/webapp/editor/icon/images.png | Bin 0 -> 661 bytes src/main/webapp/editor/icon/increase.png | Bin 0 -> 585 bytes src/main/webapp/editor/icon/indent.png | Bin 0 -> 353 bytes src/main/webapp/editor/icon/insert_html.png | Bin 0 -> 2563 bytes .../editor/icon/insertfirstparagraph.png | Bin 0 -> 236 bytes .../editor/icon/insertlastparagraph.png | Bin 0 -> 237 bytes .../webapp/editor/icon/insertorderedlist.png | Bin 0 -> 357 bytes .../editor/icon/insertunorderedlist.png | Bin 0 -> 344 bytes src/main/webapp/editor/icon/italic.png | Bin 0 -> 223 bytes src/main/webapp/editor/icon/justifycenter.png | Bin 0 -> 234 bytes src/main/webapp/editor/icon/justifyleft.png | Bin 0 -> 209 bytes src/main/webapp/editor/icon/justifyright.png | Bin 0 -> 209 bytes src/main/webapp/editor/icon/lineheight.png | Bin 0 -> 363 bytes src/main/webapp/editor/icon/loading.gif | Bin 0 -> 15416 bytes src/main/webapp/editor/icon/new.png | Bin 0 -> 378 bytes src/main/webapp/editor/icon/normalscreen.png | Bin 0 -> 600 bytes src/main/webapp/editor/icon/note.png | Bin 0 -> 649 bytes src/main/webapp/editor/icon/outdent.png | Bin 0 -> 351 bytes src/main/webapp/editor/icon/pageadd.png | Bin 0 -> 739 bytes src/main/webapp/editor/icon/picture_add.png | Bin 0 -> 745 bytes .../webapp/editor/icon/preview_result.png | Bin 0 -> 2052 bytes src/main/webapp/editor/icon/resizing_area.png | Bin 0 -> 979 bytes src/main/webapp/editor/icon/seperator.png | Bin 0 -> 1022 bytes src/main/webapp/editor/icon/smiech.gif | Bin 0 -> 1086 bytes src/main/webapp/editor/icon/source.png | Bin 0 -> 578 bytes src/main/webapp/editor/icon/sourcebox.png | Bin 0 -> 859 bytes src/main/webapp/editor/icon/special_chars.png | Bin 0 -> 760 bytes src/main/webapp/editor/icon/strikethrough.png | Bin 0 -> 269 bytes src/main/webapp/editor/icon/style_delete.png | Bin 0 -> 865 bytes src/main/webapp/editor/icon/subscript.png | Bin 0 -> 422 bytes src/main/webapp/editor/icon/superscript.png | Bin 0 -> 421 bytes src/main/webapp/editor/icon/table.png | Bin 0 -> 566 bytes .../webapp/editor/icon/table_cancel_merge.png | Bin 0 -> 1384 bytes .../webapp/editor/icon/table_col_delete.png | Bin 0 -> 1569 bytes .../editor/icon/table_col_insert_left.png | Bin 0 -> 1548 bytes .../editor/icon/table_col_insert_right.png | Bin 0 -> 1556 bytes .../webapp/editor/icon/table_col_merge.png | Bin 0 -> 1403 bytes .../webapp/editor/icon/table_property.png | Bin 0 -> 714 bytes .../webapp/editor/icon/table_row_delete.png | Bin 0 -> 1495 bytes .../editor/icon/table_row_insert_down.png | Bin 0 -> 1486 bytes .../editor/icon/table_row_insert_up.png | Bin 0 -> 1520 bytes .../webapp/editor/icon/table_row_merge.png | Bin 0 -> 1426 bytes src/main/webapp/editor/icon/textbox.png | Bin 0 -> 321 bytes src/main/webapp/editor/icon/tree_blank.gif | Bin 0 -> 56 bytes .../webapp/editor/icon/tree_folder_closed.gif | Bin 0 -> 382 bytes .../webapp/editor/icon/tree_folder_open.gif | Bin 0 -> 383 bytes .../webapp/editor/icon/tree_icon_close.gif | Bin 0 -> 1114 bytes .../webapp/editor/icon/tree_icon_open.gif | Bin 0 -> 1114 bytes src/main/webapp/editor/icon/tree_minus.gif | Bin 0 -> 124 bytes src/main/webapp/editor/icon/tree_plus.gif | Bin 0 -> 129 bytes src/main/webapp/editor/icon/underline.png | Bin 0 -> 273 bytes src/main/webapp/editor/icon/unlink.png | Bin 0 -> 657 bytes src/main/webapp/editor/icon/usmiech.gif | Bin 0 -> 615 bytes src/main/webapp/editor/icon/webnote.png | Bin 0 -> 762 bytes src/main/webapp/editor/icon/whats.png | Bin 0 -> 786 bytes src/main/webapp/editor/icon/world.png | Bin 0 -> 923 bytes src/main/webapp/editor/lang/en.txt | 163 +++ src/main/webapp/editor/lang/ko.txt | 164 +++ src/main/webapp/img/seed/favicon.ico | Bin 0 -> 99678 bytes src/main/webapp/js/seed/commonFileUtil.js | 186 +++ src/main/webapp/js/seed/jquery.form.js | 1190 +++++++++++++++++ src/main/webapp/js/seed/seedFileUtil.js | 126 ++ 156 files changed, 2771 insertions(+), 52 deletions(-) create mode 100644 src/main/java/seed/com/gtm/seedfile/SeedFileController.java create mode 100644 src/main/java/seed/com/gtm/util/CommonsCompress.java create mode 100644 src/main/java/seed/com/gtm/util/JSPUtil.java create mode 100644 src/main/webapp/editor/emoticon/Ambivalent.png create mode 100644 src/main/webapp/editor/emoticon/Angel.png create mode 100644 src/main/webapp/editor/emoticon/Angry.png create mode 100644 src/main/webapp/editor/emoticon/Blush.png create mode 100644 src/main/webapp/editor/emoticon/Confused.png create mode 100644 src/main/webapp/editor/emoticon/Crazy.png create mode 100644 src/main/webapp/editor/emoticon/Crying.png create mode 100644 src/main/webapp/editor/emoticon/Frown.png create mode 100644 src/main/webapp/editor/emoticon/Gasp.png create mode 100644 src/main/webapp/editor/emoticon/Grin.png create mode 100644 src/main/webapp/editor/emoticon/Heart.png create mode 100644 src/main/webapp/editor/emoticon/Hot.png create mode 100644 src/main/webapp/editor/emoticon/Innoncent.png create mode 100644 src/main/webapp/editor/emoticon/Kiss.png create mode 100644 src/main/webapp/editor/emoticon/LargeGasp.png create mode 100644 src/main/webapp/editor/emoticon/Laugh.png create mode 100644 src/main/webapp/editor/emoticon/Money-mouth.png create mode 100644 src/main/webapp/editor/emoticon/Naughty.png create mode 100644 src/main/webapp/editor/emoticon/Nerd.png create mode 100644 src/main/webapp/editor/emoticon/Pirate.png create mode 100644 src/main/webapp/editor/emoticon/Sarcastic.png create mode 100644 src/main/webapp/editor/emoticon/Sealed.png create mode 100644 src/main/webapp/editor/emoticon/Sick.png create mode 100644 src/main/webapp/editor/emoticon/Smile.png create mode 100644 src/main/webapp/editor/emoticon/Sweat.png create mode 100644 src/main/webapp/editor/emoticon/ThumbsDown.png create mode 100644 src/main/webapp/editor/emoticon/ThumbsUp.png create mode 100644 src/main/webapp/editor/emoticon/Tongue.png create mode 100644 src/main/webapp/editor/emoticon/Undecided.png create mode 100644 src/main/webapp/editor/emoticon/VeryAngry.png create mode 100644 src/main/webapp/editor/emoticon/Wink.png create mode 100644 src/main/webapp/editor/emoticon/Yum.png create mode 100644 src/main/webapp/editor/emoticon/ohnoes.png create mode 100644 src/main/webapp/editor/icon/add.png create mode 100644 src/main/webapp/editor/icon/arrow_refresh.png create mode 100644 src/main/webapp/editor/icon/arrow_updown.png create mode 100644 src/main/webapp/editor/icon/attach.png create mode 100644 src/main/webapp/editor/icon/backcolor.png create mode 100644 src/main/webapp/editor/icon/bold.png create mode 100644 src/main/webapp/editor/icon/brick.png create mode 100644 src/main/webapp/editor/icon/bricks.png create mode 100644 src/main/webapp/editor/icon/btn_apply_img_property.png create mode 100644 src/main/webapp/editor/icon/btn_close.png create mode 100644 src/main/webapp/editor/icon/btn_close2.png create mode 100644 src/main/webapp/editor/icon/btn_createlink.png create mode 100644 src/main/webapp/editor/icon/btn_delete.png create mode 100644 src/main/webapp/editor/icon/btn_down.gif create mode 100644 src/main/webapp/editor/icon/btn_insertimages.png create mode 100644 src/main/webapp/editor/icon/btn_up.gif create mode 100644 src/main/webapp/editor/icon/btn_upload.png create mode 100644 src/main/webapp/editor/icon/btn_upload_down.png create mode 100644 src/main/webapp/editor/icon/btn_upload_up.png create mode 100644 src/main/webapp/editor/icon/cell_property.png create mode 100644 src/main/webapp/editor/icon/closeX.gif create mode 100644 src/main/webapp/editor/icon/color_selector.gif create mode 100644 src/main/webapp/editor/icon/color_selector.png create mode 100644 src/main/webapp/editor/icon/context_menu.png create mode 100644 src/main/webapp/editor/icon/createlink.png create mode 100644 src/main/webapp/editor/icon/decrease.png create mode 100644 src/main/webapp/editor/icon/delete.png create mode 100644 src/main/webapp/editor/icon/design.png create mode 100644 src/main/webapp/editor/icon/disk.png create mode 100644 src/main/webapp/editor/icon/email.png create mode 100644 src/main/webapp/editor/icon/emoticon.png create mode 100644 src/main/webapp/editor/icon/emoticon2.png create mode 100644 src/main/webapp/editor/icon/file_tree.png create mode 100644 src/main/webapp/editor/icon/folder.png create mode 100644 src/main/webapp/editor/icon/folder_add.png create mode 100644 src/main/webapp/editor/icon/folder_delete.png create mode 100644 src/main/webapp/editor/icon/folder_magnify.png create mode 100644 src/main/webapp/editor/icon/font.png create mode 100644 src/main/webapp/editor/icon/fontbgdolor.png create mode 100644 src/main/webapp/editor/icon/fontsize.png create mode 100644 src/main/webapp/editor/icon/forecolor.png create mode 100644 src/main/webapp/editor/icon/ftv2folderclosed.gif create mode 100644 src/main/webapp/editor/icon/ftv2folderopen.gif create mode 100644 src/main/webapp/editor/icon/ftv2lastnode.gif create mode 100644 src/main/webapp/editor/icon/ftv2node.gif create mode 100644 src/main/webapp/editor/icon/fullscreen.png create mode 100644 src/main/webapp/editor/icon/hr.png create mode 100644 src/main/webapp/editor/icon/image.png create mode 100644 src/main/webapp/editor/icon/image_.png create mode 100644 src/main/webapp/editor/icon/image_add.png create mode 100644 src/main/webapp/editor/icon/image_edit.png create mode 100644 src/main/webapp/editor/icon/image_link.png create mode 100644 src/main/webapp/editor/icon/image_property.png create mode 100644 src/main/webapp/editor/icon/image_search.png create mode 100644 src/main/webapp/editor/icon/image_upload.png create mode 100644 src/main/webapp/editor/icon/imagecenter.png create mode 100644 src/main/webapp/editor/icon/images.png create mode 100644 src/main/webapp/editor/icon/increase.png create mode 100644 src/main/webapp/editor/icon/indent.png create mode 100644 src/main/webapp/editor/icon/insert_html.png create mode 100644 src/main/webapp/editor/icon/insertfirstparagraph.png create mode 100644 src/main/webapp/editor/icon/insertlastparagraph.png create mode 100644 src/main/webapp/editor/icon/insertorderedlist.png create mode 100644 src/main/webapp/editor/icon/insertunorderedlist.png create mode 100644 src/main/webapp/editor/icon/italic.png create mode 100644 src/main/webapp/editor/icon/justifycenter.png create mode 100644 src/main/webapp/editor/icon/justifyleft.png create mode 100644 src/main/webapp/editor/icon/justifyright.png create mode 100644 src/main/webapp/editor/icon/lineheight.png create mode 100644 src/main/webapp/editor/icon/loading.gif create mode 100644 src/main/webapp/editor/icon/new.png create mode 100644 src/main/webapp/editor/icon/normalscreen.png create mode 100644 src/main/webapp/editor/icon/note.png create mode 100644 src/main/webapp/editor/icon/outdent.png create mode 100644 src/main/webapp/editor/icon/pageadd.png create mode 100644 src/main/webapp/editor/icon/picture_add.png create mode 100644 src/main/webapp/editor/icon/preview_result.png create mode 100644 src/main/webapp/editor/icon/resizing_area.png create mode 100644 src/main/webapp/editor/icon/seperator.png create mode 100644 src/main/webapp/editor/icon/smiech.gif create mode 100644 src/main/webapp/editor/icon/source.png create mode 100644 src/main/webapp/editor/icon/sourcebox.png create mode 100644 src/main/webapp/editor/icon/special_chars.png create mode 100644 src/main/webapp/editor/icon/strikethrough.png create mode 100644 src/main/webapp/editor/icon/style_delete.png create mode 100644 src/main/webapp/editor/icon/subscript.png create mode 100644 src/main/webapp/editor/icon/superscript.png create mode 100644 src/main/webapp/editor/icon/table.png create mode 100644 src/main/webapp/editor/icon/table_cancel_merge.png create mode 100644 src/main/webapp/editor/icon/table_col_delete.png create mode 100644 src/main/webapp/editor/icon/table_col_insert_left.png create mode 100644 src/main/webapp/editor/icon/table_col_insert_right.png create mode 100644 src/main/webapp/editor/icon/table_col_merge.png create mode 100644 src/main/webapp/editor/icon/table_property.png create mode 100644 src/main/webapp/editor/icon/table_row_delete.png create mode 100644 src/main/webapp/editor/icon/table_row_insert_down.png create mode 100644 src/main/webapp/editor/icon/table_row_insert_up.png create mode 100644 src/main/webapp/editor/icon/table_row_merge.png create mode 100644 src/main/webapp/editor/icon/textbox.png create mode 100644 src/main/webapp/editor/icon/tree_blank.gif create mode 100644 src/main/webapp/editor/icon/tree_folder_closed.gif create mode 100644 src/main/webapp/editor/icon/tree_folder_open.gif create mode 100644 src/main/webapp/editor/icon/tree_icon_close.gif create mode 100644 src/main/webapp/editor/icon/tree_icon_open.gif create mode 100644 src/main/webapp/editor/icon/tree_minus.gif create mode 100644 src/main/webapp/editor/icon/tree_plus.gif create mode 100644 src/main/webapp/editor/icon/underline.png create mode 100644 src/main/webapp/editor/icon/unlink.png create mode 100644 src/main/webapp/editor/icon/usmiech.gif create mode 100644 src/main/webapp/editor/icon/webnote.png create mode 100644 src/main/webapp/editor/icon/whats.png create mode 100644 src/main/webapp/editor/icon/world.png create mode 100644 src/main/webapp/editor/lang/en.txt create mode 100644 src/main/webapp/editor/lang/ko.txt create mode 100644 src/main/webapp/img/seed/favicon.ico create mode 100644 src/main/webapp/js/seed/commonFileUtil.js create mode 100644 src/main/webapp/js/seed/jquery.form.js create mode 100644 src/main/webapp/js/seed/seedFileUtil.js diff --git a/src/main/java/seed/com/gtm/seedfile/SeedFileController.java b/src/main/java/seed/com/gtm/seedfile/SeedFileController.java new file mode 100644 index 00000000..6486c761 --- /dev/null +++ b/src/main/java/seed/com/gtm/seedfile/SeedFileController.java @@ -0,0 +1,433 @@ +package seed.com.gtm.seedfile; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.ibatis.logging.Log; +import org.apache.ibatis.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; + +import seed.com.gtm.util.CommonsCompress; +import seed.com.gtm.util.JSPUtil; + +import egovframework.rte.psl.dataaccess.util.EgovMap; + +import seed.utils.SeedDateUtil; +import seed.utils.SeedProperties; +import seed.utils.SeedUtils; + +@Controller +public class SeedFileController { + + @Autowired + private SeedFileService service; + + protected Log log = LogFactory.getLog(this.getClass()); + + @RequestMapping(value="/seed/extra/temp/file.do", method=RequestMethod.POST) + public @ResponseBody HashMap tempFileUpload(HttpSession session, HttpServletRequest req, MultipartHttpServletRequest mreq){ + String siteIdx = SeedUtils.setReplaceNull(session.getAttribute("siteIdx")); + if(siteIdx.equals("")){ + siteIdx = SeedUtils.setReplaceNull(req.getParameter("siteIdx")); + } + + // 파일 멀티로 받음 + //MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req; + Iterator fileNames = mreq.getFileNames(); + + String funcType = req.getParameter("fileFuncType"); + String copyContractYn = SeedUtils.setReplaceNull(req.getParameter("copyContractYn")); + + String fileName = ""; + String reFileName = ""; + String fileType = ""; + Long fileSize = 0L; + + boolean success = false; + + SeedProperties seedProperties = new SeedProperties(); + String tempPath = ""; + if(funcType.equals("trublchargermng")){ + tempPath = seedProperties.getConfigValue("root.path"); + }else{ + tempPath = seedProperties.getConfigValue("file.temp.path"); + } + + //SeedUtils.setSeedMkDirs(rootPath + "/" + siteIdx + "/upload/tempFiles/"+funcType); + + + /*MultipartFile uploadFile = null; + if(copyContractYn.equals("Y")){ + uploadFile = mreq.getFile("upFile"); + }else if(copyContractYn.equals("N")){ + uploadFile = mreq.getFile("upFile2"); + }else{ + uploadFile = mreq.getFile("upFile"); + } + System.out.println("2222");*/ + + while(fileNames.hasNext()) + { + String fileNm = fileNames.next(); + MultipartFile mFile = mreq.getFile(fileNm); + SeedDateUtil seedDateUtil = new SeedDateUtil(); + + + //File Null Check + if(mFile.getSize()!=0){ + fileName = mFile.getOriginalFilename(); + reFileName = funcType+"_" + seedDateUtil.getSimpleDateFormat(new Date(), "yyyyMMddHHmmss") + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1))); + fileType = mFile.getOriginalFilename().substring(mFile.getOriginalFilename().lastIndexOf(".")+1); + if (!Pattern.matches("(?i)^[\\d\\D]*\\.(txt|jpeg|jpg|png|gif|bmp|mp3|mp4|hwp|doc|docx|xls|xlsx|ppt|pptx|pdf|zip|alz)$","."+fileType)) { + success = false; + session.setAttribute("sSiteIdx", siteIdx); + session.setAttribute("message", "(message)해당 파일은 업로드 하실수 없습니다."); + session.setAttribute("self", "history"); + session.setAttribute("url", ""); + }else{ + reFileName = reFileName+"."+fileType; + File makeFile = null; + + if(funcType.equals("trublchargermng")){ + //위원회 사지파일만 site 밑으로 저장 + makeFile = new File(tempPath+"/"+siteIdx+"/upload/tempFiles/"+funcType+"/"+reFileName); + }else{ + makeFile = new File(tempPath+"/"+siteIdx+"/"+funcType+"/"+reFileName); + } + + log.warn(tempPath+"/"+siteIdx+"/"+funcType+"/"+reFileName); + //경로상에 파일이 존재하지 않을 경우 + if(! makeFile.exists()){ + //경로에 해당하는 디렉토리들을 생성 + if(makeFile.getParentFile().mkdirs()){ + try { + makeFile.createNewFile(); //이후 파일 생성 + } catch (IOException e) { + // TODO Auto-generated catch block + log.warn("SeedFileController 템프파일 업로드 에러1"); + } + } + } + try { + mFile.transferTo(makeFile); //임시로 저장된 multipartFile을 실제 파일로 전송 + } catch (IllegalStateException e) { + log.warn("SeedFileController 템프파일 업로드 에러2"); + } catch (IOException e) { + log.warn("SeedFileController 템프파일 업로드 에러3"); + } + fileSize = mFile.getSize(); + + success = true; + } + } + + + /*if(uploadFile!=null && !uploadFile.isEmpty()){ + SeedDateUtil seedDateUtil = new SeedDateUtil(); + + fileName = uploadFile.getOriginalFilename(); + reFileName = funcType+"_" + seedDateUtil.getSimpleDateFormat(new Date(), "yyyyMMddHHmmss") + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1))); + fileType = uploadFile.getOriginalFilename().substring(uploadFile.getOriginalFilename().lastIndexOf(".")+1); + + if (!Pattern.matches("(?i)^[\\d\\D]*\\.(txt|jpeg|jpg|png|gif|bmp|mp3|mp4|hwp|doc|docx|xls|xlsx|ppt|pptx|pdf|zip|alz)$","."+fileType)) { + success = false; + + session.setAttribute("sSiteIdx", siteIdx); + session.setAttribute("message", "(message)해당 파일은 업로드 하실수 없습니다."); + session.setAttribute("self", "history"); + session.setAttribute("url", ""); + + }else{ + reFileName = reFileName+"."+fileType; + File makeFile = new File(rootPath+"/"+siteIdx+"/upload/tempFiles/"+funcType+"/"+reFileName); + System.out.println(rootPath+"/"+siteIdx+"/upload/tempFiles/"+funcType+"/"+reFileName); + try { + uploadFile.transferTo(makeFile); + } catch (IllegalStateException e) { + System.out.println("SeedFileController 템프파일 업로드 에러"); + } catch (IOException e) { + System.out.println("SeedFileController 템프파일 업로드 에러"); + } + + fileSize = uploadFile.getSize(); + + success = true; + } + }*/ + } + + //JSON 변환을 위한 맵 + HashMap fileInfo = new HashMap(); + fileInfo.put("fileName",fileName); + fileInfo.put("reFileName",reFileName); + fileInfo.put("fileSize",fileSize); + fileInfo.put("fileType",fileType); + fileInfo.put("funcType",funcType); + fileInfo.put("copyContractYn",copyContractYn); + + return fileInfo; + } + + @RequestMapping("/seed/extra/down/file.do") + public ModelAndView fileDown(ModelMap map, HttpSession session ,HttpServletResponse response,HttpServletRequest request,@RequestParam Map paramMap){ + + SeedProperties seedProperties = new SeedProperties(); + String rootPath = seedProperties.getConfigValue("file.real.path"); + + String dataIdx = SeedUtils.setReplaceNull(paramMap.get("dataIdx")); + String pathKey1 = SeedUtils.setReplaceNull(paramMap.get("pathKey1")); + String pathKey2 = SeedUtils.setReplaceNull(paramMap.get("pathKey2")); + String funcType = SeedUtils.setReplaceNull(paramMap.get("funcType")); + + if(funcType.equals("trublchargermng")){ + rootPath = seedProperties.getConfigValue("root.path"); + } + + String path = SeedUtils.setReplaceNull(paramMap.get("filePath")); + + pathKey1 = SeedUtils.setFilePathReplaceAll(pathKey1); + pathKey2 = SeedUtils.setFilePathReplaceAll(pathKey2); + funcType = SeedUtils.setFilePathReplaceAll(funcType); + + + String fileReName = ""; + String fileName = ""; + String filePath = rootPath + "/" + pathKey1 + "/"+funcType; + + if(!"".equals(dataIdx) && !"".equals(funcType)){ + + //funcType이 download일 경우 download폴더 하위의 일반 파일 및 특정 파일을 다운로드 하는 로직으로 동작 하게 됩니다. + if("download".equals(funcType)){ + fileReName = dataIdx; + fileName = dataIdx; + filePath = rootPath + "/" + pathKey1 + "/"+funcType; + }else if("mediation".equals(funcType) || "trublreqstmng".equals(funcType) || "trublcfrncmng".equals(funcType)){ + Map fileList = service.caseFileOne(paramMap); + fileReName = SeedUtils.setReplaceNull(fileList.get("FILE_ORGNAME")); + fileName = SeedUtils.setReplaceNull(fileList.get("FILE_NAME")); + + + if(SeedUtils.setReplaceNull(paramMap.get("downUserl")).equals("user")){ + + //본인인증 시간 체크 + if(SeedUtils.setReplaceNull(session.getAttribute("isGubun")).equals("")){ + return new ModelAndView("redirect:/user/mediation/case/01/155/checkMediationStep01.do"); + } + + + if(!SeedUtils.setReplaceNull(session.getAttribute("hpName")).equals("")){ + paramMap.put("fileNo", SeedUtils.setReplaceNull(fileList.get("FILE_NO"))); + paramMap.put("seqNo", SeedUtils.setReplaceNull(fileList.get("SEQ_NO"))); + paramMap.put("hpName", SeedUtils.setReplaceNull(session.getAttribute("hpName"))); + paramMap.put("isGubun", SeedUtils.setReplaceNull(session.getAttribute("isGubun"))); + service.hisInsert(paramMap); + } + + } + + + if(funcType.equals("trublchargermng")){ + filePath = rootPath + "/" + pathKey1 + "/upload/uploadFiles/"+funcType+"/"+pathKey2; + }else{ + filePath = rootPath + "/" + pathKey1 + "/"+funcType+"/"+pathKey2; + } + }else{ + Map fileList = service.fileOne(paramMap); + fileReName = SeedUtils.setReplaceNull(fileList.get("EXTRA_FILE_RENAME")); + fileName = SeedUtils.setReplaceNull(fileList.get("EXTRA_FILE_NAME")); + if(funcType.equals("trublchargermng")){ + filePath = rootPath + "/" + pathKey1 + "/upload/uploadFiles/"+funcType+"/"+pathKey2; + }else{ + filePath = rootPath + "/" + pathKey1 + "/"+funcType+"/"+pathKey2; + } + } + } + + ModelAndView mv = new ModelAndView("filedownLoad"); + mv.addObject("fileReName", fileReName); + mv.addObject("fileName", fileName); + mv.addObject("filePath", filePath); + + return mv; + } + + + @RequestMapping("/seed/extra/down/filedown.do") + public ModelAndView fileDown(HttpServletResponse response, HttpSession session, HttpServletRequest request)throws Exception{ + EgovMap params; + params = JSPUtil.makeRequestParams(request, session, true); + log.warn(">>>>>>>>params<<<<<<<<<"+params); + SeedProperties seedProperties = new SeedProperties(); + + String fileOrgname = SeedUtils.setReplaceNull(params.get("fileOrgname")); + String fileName = SeedUtils.setReplaceNull(params.get("fileName")); + String filePath = SeedUtils.setReplaceNull(params.get("filePath")); + + ModelAndView mv = new ModelAndView("filedownLoad"); + mv.addObject("fileReName", fileOrgname); + mv.addObject("fileName", fileName); + mv.addObject("filePath", filePath); + + return mv; + } + + @RequestMapping("/seed/extra/down/zipfile.do") + public ModelAndView zipfileDown(HttpServletResponse response, HttpSession session, HttpServletRequest request)throws Exception{ + EgovMap params; + params = JSPUtil.makeRequestParams(request, session, true); + log.warn(">>>>>>>>params<<<<<<<<<"+params); + + SeedProperties seedProperties = new SeedProperties(); + SeedDateUtil seedDateUtil = new SeedDateUtil(); + String rootPath = seedProperties.getConfigValue("file.real.path"); + String pathKey = SeedUtils.setReplaceNull(params.get("pathKey")); + String filePath = rootPath + "/" + pathKey + "/zipDown/" + params.get("memberId").toString()+"/"+seedDateUtil.getSimpleDateFormat(new Date(), "yyyyMMdd"); + String fileCopyPath = rootPath + "/" + pathKey + "/zipDown/" + + params.get("memberId").toString()+"/"+seedDateUtil.getSimpleDateFormat(new Date(), "yyyyMMdd") + +"/"+params.get("rceptNo").toString(); + System.out.println("filePath:" + filePath); + System.out.println("fileCopyPath: "+fileCopyPath); + List filelist = new ArrayList(); + List fileList = service.caseFileListEgov(params); + String fileGubunNm = ""; + File orgFile = new File(filePath); + File copyFile = new File(fileCopyPath); + + if(!orgFile.exists()){ + //경로에 해당하는 디렉토리들을 생성 + orgFile.mkdirs(); + } + if(!copyFile.exists()){ + //경로에 해당하는 디렉토리들을 생성 + copyFile.mkdirs(); + } + if(orgFile.exists() && copyFile.exists()){ + for(int i = 0; i < fileList.size(); i++){ + //System.out.println(i); + EgovMap emap = new EgovMap(); + emap.putAll((EgovMap) fileList.get(i)); + + + FileInputStream fis = null; + FileOutputStream fos = null; + BufferedInputStream bufferedInputStream = null; + BufferedOutputStream bufferedOutputStream = null; + + //파일복사 + try { + //FileInputStream fis = new FileInputStream(emap.get("filePath").toString()+emap.get("fileOrgname").toString()); + + if(emap.get("fileFunc").toString().equals("mediation")){ + if(emap.get("filePath").toString().indexOf(".") <= -1){ + fis = new FileInputStream(emap.get("filePath").toString() + "/" + emap.get("fileOrgname").toString()); + }else{ + fis = new FileInputStream(emap.get("filePath").toString()); + } + }else{ + fis = new FileInputStream(emap.get("filePath").toString() + "/" + emap.get("fileOrgname").toString()); + } + + fos = new FileOutputStream(fileCopyPath+"/"+emap.get("fileName").toString()); + + bufferedInputStream = new BufferedInputStream(fis); + bufferedOutputStream = new BufferedOutputStream(fos); + + byte[] readBuffer = new byte[1024]; + + int data = 0; + //System.out.println("111111111"); + while(bufferedInputStream.read(readBuffer, 0, readBuffer.length) != -1) { + //fos.write(data); + //System.out.println("aaaaaa"); + bufferedOutputStream.write(readBuffer); + //System.out.println("bbbbbbb"); + + } + //System.out.println("22222222222"); + } catch (IOException e) { + // TODO Auto-generated catch block + //여기서 에러남? + e.printStackTrace(); + }finally{ + try + { + // 파일 닫기. 여기에도 try/catch가 필요하다. + // 보조스트림을 닫으면 원스트림도 닫힌다. + if(bufferedInputStream != null){ + bufferedInputStream.close(); + } + if(bufferedOutputStream != null){ + bufferedOutputStream.close(); + } + if(fis != null){ + fis.close(); + } + if(fos != null){ + fos.close(); + } + + } + catch (Exception e) + { + System.out.println("close failed!!!" + e); + } + + } + + filelist.add(new File(fileCopyPath+"/"+emap.get("fileName").toString())); + fileGubunNm = emap.get("fileGubunNm").toString(); + } + } + Random generator = new Random(); + String zipNm = params.get("rceptNo").toString()+"("+fileGubunNm+")_"+ seedDateUtil.getSimpleDateFormat(new Date(), "yyyyMMddHHmmss") + ".zip"; + File zippedFile = new File (filePath); + //File zippedFile = new File (filePath, zipNm); + + if(!zippedFile.exists()){ + //경로에 해당하는 디렉토리들을 생성 + zippedFile.mkdirs(); + } + if(zippedFile.exists()){ + zippedFile = new File (filePath+"/"+zipNm); + try { + //이후 파일 생성 + CommonsCompress commonscompress = new CommonsCompress(); + commonscompress.zip(filelist, new BufferedOutputStream(new FileOutputStream(zippedFile)) ); + } catch (IOException e) { + // TODO Auto-generated catch block + log.warn("SeedFileController error1"); + } + } + ModelAndView mv = new ModelAndView("filedownLoad"); + mv.addObject("fileReName", zipNm); + mv.addObject("fileName", zipNm); + mv.addObject("filePath", filePath); + + return mv; + } +} diff --git a/src/main/java/seed/com/gtm/util/CommonsCompress.java b/src/main/java/seed/com/gtm/util/CommonsCompress.java new file mode 100644 index 00000000..e708d7df --- /dev/null +++ b/src/main/java/seed/com/gtm/util/CommonsCompress.java @@ -0,0 +1,55 @@ +package seed.com.gtm.util; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.Charset; +import java.util.List; + +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; + +public class CommonsCompress { + // 리스트로 파일을 받아 zip로 압축 + public void zip(List src, OutputStream os) throws IOException { + ZipArchiveOutputStream zos = new ZipArchiveOutputStream(os); + //20190916 org + //zos.setEncoding(Charset.defaultCharset().name()); + zos.setEncoding("UTF-8"); + FileInputStream fis = null; + BufferedInputStream bis = null; + + + int size = 8*1024; + int length; + ZipArchiveEntry ze; + byte[] buf = new byte[size]; + try{ + if (src.size() > 0) { + for (int i = 0; i < src.size(); i++) { + //System.out.println("name: " + src.get(i).getName()); + ze = new ZipArchiveEntry(src.get(i).getName()); + zos.putArchiveEntry(ze); + fis = new FileInputStream(src.get(i)); + bis = new BufferedInputStream(fis, size); + while ((length = bis.read(buf, 0, buf.length)) >= 0) { + zos.write(buf, 0, length); + } + } + + bis.close(); + fis.close(); + zos.closeArchiveEntry(); + } + }catch(IOException e){ + System.out.println("@@ CommonsCompress IOException @@"); + e.printStackTrace(); + }finally{ + if(zos != null){ + zos.close(); + } + } + } +} diff --git a/src/main/java/seed/com/gtm/util/JSPUtil.java b/src/main/java/seed/com/gtm/util/JSPUtil.java new file mode 100644 index 00000000..ffaf6d8b --- /dev/null +++ b/src/main/java/seed/com/gtm/util/JSPUtil.java @@ -0,0 +1,374 @@ +package seed.com.gtm.util; + +import java.io.UnsupportedEncodingException; +import java.lang.Character.UnicodeBlock; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.json.JSONObject; +import org.json.XML; + +import egovframework.rte.psl.dataaccess.util.EgovMap; + +@SuppressWarnings("rawtypes") +public class JSPUtil { + private JSPUtil() { + } + + public static EgovMap makeRequestParams(HttpServletRequest request, HttpSession session, boolean ishan) { + EgovMap params = new EgovMap(); + Enumeration e = request.getParameterNames(); + while (e.hasMoreElements()) { + String key = (String) e.nextElement(); + String[] Values = request.getParameterValues(key); + + /*if (!(key.startsWith("content") || key.endsWith("Content"))) { + for (int i = 0; i < Values.length; i++) { + //한글깨짐문제로 주석처리 + //if(ishan) Values[i] = convUTF8(Values[i]); + Values[i] = SQLInjection(Values[i]); + } + }*/ + + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + + // 배열 + if (Values.length > 1) { + params.put(key, Values); + } else { + params.put(key, Values[0]); + } + } + + Enumeration ee = request.getAttributeNames(); + while (ee.hasMoreElements()) { + String key = (String) ee.nextElement(); + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + params.put(key, request.getAttribute(key)); + } + + Enumeration eee = session.getAttributeNames(); + while (eee.hasMoreElements()) { + String key = (String) eee.nextElement(); + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + params.put(key, session.getAttribute(key)); + } + return params; + } + + public static EgovMap makeRequestClipParams(HttpServletRequest request, HttpSession session, boolean ishan) { + EgovMap params = new EgovMap(); + Enumeration e = request.getParameterNames(); + while (e.hasMoreElements()) { + String key = (String) e.nextElement(); + String[] Values = request.getParameterValues(key); + + if (!(key.startsWith("content") || key.endsWith("Content"))) { + for (int i = 0; i < Values.length; i++) { + //한글깨짐문제로 주석처리 + //if(ishan) Values[i] = convUTF8(Values[i]); + Values[i] = SQLInjection(Values[i]); + } + } + if (!key.startsWith("CLIP")) + continue; + + // 배열 + if (Values.length > 1) { + params.put(key, Values); + } else { + params.put(key, Values[0]); + } + } + + Enumeration ee = request.getAttributeNames(); + while (ee.hasMoreElements()) { + String key = (String) ee.nextElement(); + if (!key.startsWith("CLIP")) + continue; + params.put(key, request.getAttribute(key)); + } + + Enumeration eee = session.getAttributeNames(); + while (eee.hasMoreElements()) { + String key = (String) eee.nextElement(); + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + params.put(key, session.getAttribute(key)); + } + return params; + } + + public static EgovMap makeRequestParams1(HttpServletRequest request, HttpSession session, boolean ishan) { + EgovMap params = new EgovMap(); + Enumeration e = request.getParameterNames(); + while (e.hasMoreElements()) { + String key = (String) e.nextElement(); + String[] Values = request.getParameterValues(key); + + if (!(key.startsWith("content") || key.endsWith("Content"))) { + for (int i = 0; i < Values.length; i++) { + //한글깨짐문제로 주석처리 + //if(ishan) Values[i] = convUTF8(Values[i]); + Values[i] = Values[i]; + } + } + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + + // 배열 + if (Values.length > 1) { + params.put(key, Values); + } else { + params.put(key, Values[0]); + } + } + + Enumeration ee = request.getAttributeNames(); + while (ee.hasMoreElements()) { + String key = (String) ee.nextElement(); + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + params.put(key, request.getAttribute(key)); + } + + Enumeration eee = session.getAttributeNames(); + while (eee.hasMoreElements()) { + String key = (String) eee.nextElement(); + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + params.put(key, session.getAttribute(key)); + } + return params; + } + + + + public static EgovMap makeRequestParams(HttpServletRequest request, boolean ishan) { + EgovMap params = new EgovMap(); + Enumeration e = request.getParameterNames(); + while (e.hasMoreElements()) { + String key = (String) e.nextElement(); + String[] Values = request.getParameterValues(key); + + if (!(key.startsWith("content") || key.endsWith("Content"))) { + for (int i = 0; i < Values.length; i++) { + //한글깨짐문제로 주석처리 + //if(ishan) Values[i] = convUTF8(Values[i]); + Values[i] = SQLInjection(Values[i]); + } + } + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + + // 배열 + if (Values.length > 1) { + params.put(key, Values); + } else { + params.put(key, Values[0]); + } + } + + Enumeration ee = request.getAttributeNames(); + while (ee.hasMoreElements()) { + String key = (String) ee.nextElement(); + if (key.startsWith("encodingFilter.")) + continue; + if (key.startsWith("openSessionInViewFilter.")) + continue; + if (key.startsWith("multipartFilter.")) + continue; + if (key.startsWith("org.")) + continue; + if (key.startsWith("javax.")) + continue; + params.put(key, request.getAttribute(key)); + } + + return params; + } + + + @SuppressWarnings("deprecation") + public static String SQLInjection(String str) { + String rStr = ""; + for (int i = 0; i < str.length(); i++) { + if (JSPUtil.isSpecial(str.charAt(i))) { + rStr += URLEncoder.encode(String.valueOf(str.charAt(i))); + } else { + rStr += String.valueOf(str.charAt(i)); + } + } + return rStr; + } + + private static String convUTF8(String str) { + String rStr = ""; + try { + rStr = new String(str.getBytes("8859_1"),"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + rStr = str; + } + return rStr; + } + + private static boolean isSpecial(char ch) { + char[] badChars = { '\'', '"', '%', '*', '<', '>', '&', ';', '\\', '=', '+', '^' }; + for (int i = 0; i < badChars.length; i++) { + if (badChars[i] == ch) + return true; + } + return false; + } + + public static boolean isHangule(String str) { + for(int i = 0 ; i < str.length() ; i++) + { + char ch = str.charAt(i); + Character.UnicodeBlock unicodeBlock = Character.UnicodeBlock.of(ch); + if(UnicodeBlock.HANGUL_SYLLABLES.equals(unicodeBlock) || + UnicodeBlock.HANGUL_COMPATIBILITY_JAMO.equals(unicodeBlock) || + UnicodeBlock.HANGUL_JAMO.equals(unicodeBlock)) + return true; + } + return false; + } + + + public static String tagReplaceAll(String src) { + if (src == null) + src = ""; + else { + src = src.trim(); + src = src.replaceAll("&", "&"); + src = src.replaceAll("<", "<"); + src = src.replaceAll(">", ">"); + src = src.replaceAll("script", ""); + src = src.replace(""", "\""); + } + return src; + } + + + public static Object fixNull(Object obj) { + if (obj == null) + return null; + else + return obj; + } + + public static EgovMap fixNull(EgovMap map) { + if (map == null) + return map; + + for (int i = 0; i < map.size(); i++) { + if (map.getValue(i) == null){ + map.setValue(i, ""); + }else{ + //tag modify add 2016.07.02 최병기 + map.setValue(i, tagReplaceAll(map.getValue(i).toString())); + } + } + return map; + } + + public static List fixNull(List list) { + if (list == null) + return list; + + for (int i = 0; i < list.size(); i++) { + fixNull((EgovMap) list.get(i)); + } + return list; + } + + public static void fixNull(EgovMap map, String key, Object value) { + if (map.get(key) == null) + map.put(key, value); + } + + public static String addZero(int param, int size) { + + String ret = Integer.toString(param); + int length = ret.length(); + + for (int i = 0; i < size - length; i++) { + ret = "0" + ret; + } + + return ret; + } +} diff --git a/src/main/webapp/WEB-INF/jsp/_extra/gtm/board/write.jsp b/src/main/webapp/WEB-INF/jsp/_extra/gtm/board/write.jsp index 90d9d47d..f722ca94 100644 --- a/src/main/webapp/WEB-INF/jsp/_extra/gtm/board/write.jsp +++ b/src/main/webapp/WEB-INF/jsp/_extra/gtm/board/write.jsp @@ -152,7 +152,7 @@ $("#paramFrm").submit(); } - - + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/layout/seedAdminLayout.jsp b/src/main/webapp/WEB-INF/jsp/layout/seedAdminLayout.jsp index c0f71422..8f443666 100644 --- a/src/main/webapp/WEB-INF/jsp/layout/seedAdminLayout.jsp +++ b/src/main/webapp/WEB-INF/jsp/layout/seedAdminLayout.jsp @@ -17,36 +17,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -59,27 +29,85 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/editor/emoticon/Ambivalent.png b/src/main/webapp/editor/emoticon/Ambivalent.png new file mode 100644 index 0000000000000000000000000000000000000000..f9575f359056cf3c5e97292cb55d7bafbac2f940 GIT binary patch literal 701 zcmV;u0z&?S!QDh5iCV5O-}_xN7fCiGtSNjf-g0LJ0{W1SRkiiHI(Yo66v~nB(-k z(;S&(S_BRJJTvFK=Q-zj&+8FXRb~I<5ls570uPYD6=2i*cVG+FU<%~FiTc5VQmOR3 z+wH!aPN!eD+pVnX54}@guh)BDE|*^*_8|xyi(JoSGH3Joyr(FN%GvF9e_$L#?11KA z?hP(tjYJ}k7mLLuR#pFn<#IWS$Ky}9{hO6a<@I{KRyUi?0s1CZtCa@-K8~r?YHy)& zi!vD6r9Jq{XCCDQ2-)T<8{Q3ulwb2#V3;k2}t z97vMHe&PuP0#9j23U)DfI2>-f-Oj95>tXvwtK5pq<`oCI<`iT2(>86RU(nd4F-c(R>~WyS{M$8>u5B3-)6Jfd9cyq zv0dbKnakzg)a&&R(C7(zQpw_}-|v5v&1UhBiQGj}-KY`K(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ=ph-kQRCwC7m0xI6R~*Mb=O$g!=5}obYf9{BEt+=tFdPL(K+0@=vJc9J`Y!mi zKKdw9_A;U1Tb21D_+XhRmaws{O!`pT4VrEkG_5T*O`~n6Npo}4v^V$O-yW8P*!gEN zcHqnT!|!~*=lsr(^Hm}OfKtjMA`bs!tJUx-r9K2&BaukEQpyCjfeerlk>Y<8st5Lz z;g3Wjx>70yYAwVZ+;sNhtKP}ULOnw357x^ zrO0Np?LMEceSCcU%L4}vs7eY&1jqTi95hX9)^)vE*Y$8$SJ#Q-$B(nLv_vM8!SDAY zBBax4*4EZAO|v*ZKYyc~Me2Z))6>&0H#axMG)>vs+LA({Akk=478e)AvaI*Q;^Lx2 zqtPmtX_~URxhd1r(=UOOK%EA7`}+FYIy*b}?Ck8Yv$I1gl_DOG)6mdBC=|kV-6|Z% z!EqdH+s3x->by246bhm1I`Md%R4PSLI6(yObh#9}d8 zT3UGe^eNrl-Tx4+?O(T6=?@(`#PaeoEiEm?Vlh@%SJ~LuNYBj7n81z(IP2@{vx9?! zSEAAAt#CL@I-Mq)&EoUmnkrpt3ePI$E9kd_J<-Ea`Nba5zjf8of0* zICy1yd;1R&alIlUN~!r|GHDrx5q2C0!!W3;t3xS;<2Y!VMkbS?^4Ywui3rc0J*ys6 z(=@zZFNR^z+}w;|7)COg{2q7;plW`uy2i%F3u9wrmmJ60n@lD-ckUcYDKt$((=?P) zZ~ZVTw{=~YQmMq#LAAUGK zKHeV)1U#Ci;qiD-N>#C25P0Q{4a2ZcpFTZt`0(NU#Kgqx`uh4$!0%EHR<-Fvnzh_JM@v=)g(E&(&Z3SicHfwqgl0Sw>~FdL7@ zf3CRjkPJRjBEFc2*qNtaQX7(8+Y#9`3{&C5%;}>%j90*v)0zuV?#qj zy}iA?-MX$f*4Nk9H#If202qdm+uGVHn5J2no10r09Uc8GnM_UsQzBx&k^3FO3aAv^ z$3REf7X3hDIm|3uVzFFAkIMGw$Xm$OzxDL8|9Z+}RkK%W;FRIMi}0@j0L#HWAS%PK QrvLx|07*qoM6N<$f;47$*8l(j literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Angry.png b/src/main/webapp/editor/emoticon/Angry.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6e8c1e318f9a1c175b3b78f1715059f5e5dd66 GIT binary patch literal 1394 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 Mi%L`;S(;h=H?2|p#Q*>R literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Crazy.png b/src/main/webapp/editor/emoticon/Crazy.png new file mode 100644 index 0000000000000000000000000000000000000000..5bba90c8d374dd83855ffe99062b23e102b7ccc5 GIT binary patch literal 852 zcmV-a1FQUrP)a9?E6aNA~?q1qMi-#84V{3j6;VPI5NS*x zbtMrJ$Y>ga!QfzLXJ=nSLqn_GZf~?$EJO_Da`|_mP*Bd!&VEE9krj;pjN1wlDuSR= z+MThnv1ge~Ca!53H=wHOU#RtA>^_~rvrUFPlGp1U%x1GnsZ`?sf?O_l;`8|)8t(TXVKOo0FVsd#r9^dNfDl9H8!ra^(3=9mA zW-vTF49(5WB5gbjs2|MF&tLX;qx&|+_>;+GdSYUND~iH5H#a$!NgD8(nHgb?=R_h= z^%H21&JqV@WJ7ib33hmR2un*#B7=^O4oIid)%Mc!@$oUNudf4^11^_K?3qj^C%WxK zWJMBldwV-&mI2)jEZ;Naw zP}nP=9UWC;=u9e=I-zN&(td_Qq3=UOL-$p$mudz{l0Yk!su_``Yy`Tx1ObtOssc`V zlqQ@q+L@f3{ED5);b%ZKL$O#Ccr`Kt2^2ROiwXOBbX4q948>wu`RVCt>dvl&HyvBa zu(gGro}Nc$v)L-Nz&A>f2&7QplTb+5ruur2eLmsCA*=lTY4;Jt%~h-=g%Ls9fiZ;o!QyhZ+m-tl+6lqs0I;X8fX;) e-8lP4fB^tNI76kgg8q>J0000y=v534}?S#qfrwMHY9K$k$5OXLpC9SN{bRc z7nc3-dDmg3NE1z*%==~p!!X$YXu_P>GFSqOzzG~Yt^x(fpbc6lnVtu? zlF8)bN~Q9;-ENl^MQItlQJ-RxB)v(e(@&sX2i{qei?LYjey`V)G)*%msH%F5>9KCN zTctUeyD~Ac2ZO=8Flpeg#=p?-_m3ix$i2z-uVgZrXR<6C!{N|^zKOwLU^4lh)nv2T zm+-hsPCmciAHmtMX7jtX*X`|xY&N5UAh1*_bxgOl^&o`T1u|L^MbRf-+hmv5ekW1a z^*^#f#^Tx?=&S$}MW>HEYM+p1*cAd|zhX5JF(z5^KUH3_`z5^ak;; zUavnNjYjVc!}z*huXQgN_z#<^svjDS#tZU&L?ogjw~EE$)5T(;I*#Kpw%hFm!fW&S zTtf`S-ew|unM~#}iJZ}{-oId)=6Nocd&1Jc(`vQe*tYF0m&@Pa8CaI(!=9r)olfT+ zY21a9l1im=uIq9<|Eu=wB%>$F)-kiSWHNa~(@hA;k|Zf%p!j7Ahb_L0Y;3!6@x$6Y&H%KEJi;L6?2X^0?gsE)R+kKr-GwF zJqTIT>GTJT)GIz=!6?j!`RTfTj&4V4-+R5@Nuf}<*K9Vq;c)1uRxX$SI3-Z6R{c4h zPILKuo*N7Xr{r=5Pf1afXYF?Tl_-i=5ya{gtyMTR%&XPPBC(g_@%Z%~t-I9K{A4n* zv)OD~5QP139au`ybg8aprBZp@?RGzshRU`?ibsh=;Ja;xO=81Xl>qh|}OY!SQ?i pj{8XnMEMYYi9$F5E(`oAzyLb)@r~&Z%>4iW002ovPDHLkV1k@vGYkL# literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Gasp.png b/src/main/webapp/editor/emoticon/Gasp.png new file mode 100644 index 0000000000000000000000000000000000000000..a099613bc5c726f59774c643d5850aed0651f35c GIT binary patch literal 786 zcmV+t1MU2YP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;m`OxIRCwB)l+R04Q545N_s-LKuSRS_%ylr3 znM`J^udnZ{<2a|fy1GsPc%JvO*=+7qDwWTLLg9^4>N&6@B0B)&U3V?-x{`NYSs5Qc z@O@t*7-J40&h78-7bhntZvn1|paot<+4Nt%+U@&35rQB%ggBQ>CeO^z&p*uNau=0S zmi};X@IEp+nalkZWQ@TWbELV}x^Hf7?k3D%)-hOP`c8}JYL?VGws*TQUqRgX< zuh;9phK7djX`r#YyZgPfL!GUU5NRS^wOaiFG&S&TZEbDC7=!0|v|6q99wGi8*BE0c z6bc`K9R)Z80|O6MR#s+h+di(8LTlYF?cMY=0NL4DL zAgI-9s$4ENM@L65SeBKH#J=yNKWxxrJJ^}bp%NR7Mtx>x=F#fv>Pz5@3g3nWTh^Wr_6pofe_#FX2V(>!*QQ+?Z04*)xv}Dxt Q;s5{u07*qoM6N<$f|oLCegFUf literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Grin.png b/src/main/webapp/editor/emoticon/Grin.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7a694ebdeea773db74e430c81ec83b310fdc6c GIT binary patch literal 769 zcmV+c1OEJpP)8WH#=r&^4WT=dCa#E=!NbX9(p@YT(!XFjot}lm;V0_J?q)KXmnd7B z&*xjvoG_csWT^AYHMv~wHFDe|CgF zqISCt$z&2boet2PinX9M+SArhFL4kNk8d!dfl#ehAs&xIy)WhGvTs8 zT910Y-Z9C=MH%W5u6tB<1dPSfZnr-rMQb#3EVCEigTD3+q>DLRm3VngoC16L8JN>A zvLZB`0xFT&v-9)wpH8RKyl~$KyB<=>)#hdIXs^J^3!N~O})c#p>eKA#UP7R&ZV@g=iJB$8-0n=kZOv%yp|tyW76g+h;6mffKu z9Kr2&gWvC$30y80a2&Ta8GW555{XxZLg6iP)EH_)739^v&1O4@#bWr62|hHLOlHi8 zfC_GsB0SoVn(?L6a=H9Hl}deVG#Xjl$|J{0C88seI?BW&I*IZb;SpxV>xuFSAv6)> z&5&*#IV47V%?cr_kTM#`m!`p5A=s$BzXccoJ6ZncqO>5n00000NkvXXu0mjfS0P@l literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Heart.png b/src/main/webapp/editor/emoticon/Heart.png new file mode 100644 index 0000000000000000000000000000000000000000..9103b13b4a077c5ce0ed9cd62028ade48247b521 GIT binary patch literal 4244 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 C(De=g literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Innoncent.png b/src/main/webapp/editor/emoticon/Innoncent.png new file mode 100644 index 0000000000000000000000000000000000000000..533aaab7604c1a70b04445272691319e237d54ca GIT binary patch literal 4129 zcmeHKeM}Q)7_UO+Y|u@z0e-BWH=_<|uau%tTRux?7r;^~)J_@4-9amDuiU-R!bAfi zej+Af3_}Ix2RhWv1QEj+$`+h4fQC77Y&cO&3_~P-5}n!g+Cs_1uw?#6llJL*&-42| z@B4e7_sPB6Rq>zB;LhQ4IGh>Em2x#>z3tz3-(h}}+IJ^2W;Te?fEQ1Fd zn_!P#A&;mm@(!eqe}1 z7%UM7Le38y#)YI5o-R?#70z_bNCxWxut*TZYPAZiK?0J>KmtQULlL0}5sCOr1fR|| z1JuSh(;wR@92|0j#wddY7)Uc@=S0)UY#@VS#t%8kacqR!l1&*|W*kEZBVi)UfJOoZ zfrxuNqlDU!p$GH`%uG8~X7omEsD*(D5sHl&gS6;LK+<~B@_OWmo5j1QR9XNgX7btv z9lw_ona;u1 zz&PwGjKrBTbrkSx$N@DTxrQ(%lN8fKUW<(}p@uj4S5q!8TM$yVwA>m1vm1_QOk-hs z8Zy$eml6}QlX6W+CRfm;TrMRhWGCgCkW8+iNx57~Ovp~k zH6fW?L2r_aJ9;f5%*^|-mAUj3U7Op-;Y_tE<&hfOZzsz-cB&ITxHOnpE}9o`@+WVl zZb?G5hak#0+vBuc*U+vz(HJq+`ec4ltxrL3l*%(JsL=;KQdQ?CemG4~mgTcK{EOlK zC$ev?eSIN~f(<>5gFW;Q&koTYjfD%9e{B+@9bIv$p35&xx%$bSrQdO2zk;2$^1;Hz zH;qqCwb%W3D-O4&ooU!prpTYu4s)v;Ev|9ft@SLE}GcJsL_qH?b*ebnRJZu7b3OE1=LzBIR@El1nHsHPcc%6>lsTYf09 zFUxNlH}Xmp33qul7gIxu4)^HAJ+Q~ZJbAko6d!mMyJ+vNFPnONWAl$zM5@*;u3O<@ z^W-hL@pHE2cvtMcrE<;sLCyL2U%||lLobvy+qnK+@l#HJxa{|#QjQ0wa{ZL|`*K<~ Q*e~tMn0Wc=sMNxL0E>S1^8f$< literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Kiss.png b/src/main/webapp/editor/emoticon/Kiss.png new file mode 100644 index 0000000000000000000000000000000000000000..c52823e10c052eed7c715f86c288245ff771e6b7 GIT binary patch literal 735 zcmV<50wDc~P)w0?^p zGkwo6cbM2hDfGfSm$~i7GtdcA%H`%hSw0F+dK7SW^g z^Yho^@%VbP*(hA=_4aiMicw7LUhSqtVbI z+#U(122}_&>-Bm+Xc4`l$_VuNe9Yx?v5Sifc64;4+i<(VU~o&_PN47AYV`|kAWVk- z&}UM!*<_tghb0mTRw|Y5*pLsp{3``c$*|(YH~D=2t;J$_K>6W$B2kXA*{m8}G#X_{ ztbTO>XR%l;g@fMh03@TUg>JVy4~N5kQ51KLc_0{iMU~BF)31!YPE)DWhjO|68H{W7 z>xVH_@7U>do+Oh=d@;cnaN0wUSnYPZL#y79oN?&1R;ztWr_+^oyIsK66&Py{qAOB# zHs~evO#6*kpgpY}FfdWj%4dKI|^K-~-sHue<-iOJciB??KY z>6v-9O7C~?S5nAKu~iB;^)>Jbs{}UJ3djZt>nkaMm6T-LDnT3-;TxdfoL`ixV4`QFXQZ2KU}mgfYOH5$ zYGh_)qN8ABU|^wdV6Ja$plfJhWngM$VyFNGN_JcdHbp6ERzWUqQ0ss^TcwPWk^(Dz z{qpj1y>er{{GxPyLrY6beFGzXBO_g)3fwM zQsi1ul9*Bi%LbV8&Y2~ZxMhQYB?mYS;4nQPIX?xMOd$yvi{T|jxC{?T%?Zyh0+u0I z^}6OJX5y0%ErQ8{6NC*oX(1H=z}SF@0SgvjnWhgf)S#&eTK>?A0*4l@42PLJY6&bP zh@wY>i>P3NDH;tfSV#~>j|LY}!30w@8eFiDAc`IhE~0`7rU+kfaUr@zsd>QmaXGNl z({fSzDFXvjwWo_?NX4x+Q}%aDIf@)lzpHvPRJ?f6JWqooP6D1T4|7CXMVu5$qgGEj zbaRQpf*W)H@vmIBML?0o=|Dr~76H?686m-k9P_3(cSPPjEdTo1-qhnOJ}NZw)Z8h3 zW_^EV<@>h=t5!|=e{qIw?RN(51eSLUbMEbDd3J!;fX!|DOsj_FN0UC5uD@PwF4u4U z`De|NSG@N(uD}0&zy9>o`3|qy`O1CeR3@LCKKbO5^%`AXk$TgkbNW0dl{6M7ymQVv z)aJDCc|sBE>Q(;_m00cVb6c$c;fKUx_o-g0kIQz)8=iST!E&zOThGak$J-7+jA~96 zXuDitGw-OwJ@eUT&(Aummbo=*mVyM&BnO2JW{Y`!Z@v9C?cCEM*MeA+O*4Gd*!h-S z&h#xPDsuW$XMa<-_iC1FS!vvQ@yRKU%J&isI6`(*?zt_c=OCUKd5wjivG<*mdb_oT z2v>b*&Ci;+>PIphzqtNh@DOBi{PeSC(cy;*ck`wnN!n=t$XR%ThlFVdQ&MBb@0Bf4+b^rhX literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Laugh.png b/src/main/webapp/editor/emoticon/Laugh.png new file mode 100644 index 0000000000000000000000000000000000000000..3a811007226feeea51a9f40159914720a005989e GIT binary patch literal 754 zcmV_ZRrugis1@Tx8|0&}|R}*TF>=;>M5!2@;S%qCzP`NE1S&HgU*n zQl^<1&lzSk39Tr2;mf^q?)koZ&m)&H30iz1g2iNxk`IBaN|X4sfcr*oLy zL*Ev0kbBt{;Uba9-O*@th^HF=g7J8K6pO{~+2OAg3WXPw$;7~rj8rOR&h$-C6vc%7 zz35Xam0qF7Dhb_ax7+)uZsc+~la$Zr=`;gxIR~=Q-mDLCNrS3(r`PMf76jou!~8Dd zS#7cCgCPzAfxsrk=EO}mCJpF3~_~{}c2O4=Y()e33@+X{}oM==q z64Ef{q0{LU$)T7`!jI$QKdHb4QG{DNJEjmOoEp?1A*I{xeh-C0B5hpX-iGS#E-bm- zpwg)(8Q>hp0>^PM!1czXhk$)$-b|L|BkFb*f4)^JmCv++*91Y5AiT8&I)>*%F+aiM z1`%gXaKPGw`=$^15~o(H?V-jYCBqdA1|JuT#b+3vhw?*tQe_!NpT2-{Z~#2Rg0Q*_ z-isX`LbLtze9}%W0Dw#a&=RZq}$1468|xgt6r~Hbm8#%e11yPU@+(t84n#-tJSaR zboyhn*?f;%ALwPUg(yV29reUD#1-oqaUw*kUL)%XA+!*C)^kGTH<;NDwgh=gl$n85 kyI&x(hFsn5xt{_I03U<#F+1bqpa1{>07*qoM6N<$f?Qu&_W%F@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Money-mouth.png b/src/main/webapp/editor/emoticon/Money-mouth.png new file mode 100644 index 0000000000000000000000000000000000000000..2069e35638a2876bfd22dfb1d14337d9c14976b4 GIT binary patch literal 777 zcmV+k1NQuhP)o($i+(zIS4`zMLahkUOagy)KZEXF@%yss;Mb9 zZQ3+zO|l!3-K;Z9URgsa3MPD+y!U3l_s!2Pr|UZWkI$+04UXgNXnGJ`h)$D_il`$L z#32fhjwM0@9*wZLxH#+ac>GSM^Rmrm6RcJ%5ksTV_^BvLp;Rh;OD2=6=>HbC3rJWn z2wJJRL!r=Ixm@1VG)-qvRrL>;&(L>^VlZ}qm8WBBYHGGpsTAtme1#bU5qi^ zxNRe?a|Z_pags|!1eU@{WQ+*Mq9F*vLrP7Xe#XEEe}% zF4x(3JPym>U&4U9|3pRG`CYg%^caG{AV`w5Pt#6{b`pt13I`6nUN5-$LGWA~1xKF) z?CvhO{opG2?~g%muLDNJOAxp>WB8CS#o&~uX~Kyp6Ap*p>kVn?gCe{ z!s)sInyN!hX~4+H7$iQVp!LWA4x}83M3!;6(SbiroN5j`p-fCnjAnK|cHRm2K$3rf zs#RebU@p31_-zDYS6jV`RMt-V8zO^%9(U7}h|^E~f=^z`~O zQ5=HF$t!SJssP__hrL}1?B{xb!|$ihY1qhYz?&CeBDq|S)T|*oWL)~2 z_s{F+NhiHdsO!j~bLKX;2+y}jITMWTo1h_nU~H4c{uW>W>3j8&$S_qa00000NkvXX Hu0mjfccp5A literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Naughty.png b/src/main/webapp/editor/emoticon/Naughty.png new file mode 100644 index 0000000000000000000000000000000000000000..56aa7fea53d1d12206d3336ac6fbb337c2b476f9 GIT binary patch literal 889 zcmV-<1BU#GP)H7 zZtZQ)Irr~%&SOtr`Lzqbch9-^oZmh7ciwxHAPD4t4C?9NV6@Kj!Jj<;6#Ue3GHHgH z1?T~4fU+4|15^Mf01gWH{n+hxb~4OMCBw8RfTVG6Y;5$B!SFhi%Z>Q`{s-}Re3|38 zK&4Xo00|KU+PIcTB%TEVfrnR&#+z<~;SJ<6HJ-0hPrAFaBX;|bs!C=3s?}Z?TU}MN z4u@F6zt^THN}Rb&hP<7ft@M=3NmaF)4ILhKDIoOSMm}%1balD4EURub8l+yYi$Gfr z`8vj8&IZRhkb~~j>s1bhx&JGd(+tkf6NkqmR)WFOEZI_pYQ3IlEEW>-`)Od-eCIeH zt*2?vo$2XO*T8_@J27#NL?Vz#q?v7RC$-a4!nobs`*1jfm%f$FW?!k*YLlb^j(k2( zQmGX2dcC5*ySq!APA4&&&1W%43QZ_jt=36wt#)&B({OZjME3Xh#Q>AZL@ZGH@bK_i z5)uT1L6XbmNTE;=*E%{nh|Oj*f~iA)5-JiF78V4kLVzIAj>Td^u~_^IxQ2TegRy95 zG8ufg?qWstQmItz?d>)Cd_M7{zP>)v+S+>V?Zq|RTUuHYeaImvFz}Wr%I%$7IgCTSvn70^$o)A9cP{znSfPe&q=FSS~YRI61K?`)PJ_vJB|6OBf{ z0Y`?0M`3$=+cq^dbsefu%TL5$v@rqwgM$OIwzfuGE*H`1bfjD^mu6;WUcjfbjzkTf z=P79Q$AX>4U><@4U&-bdK_1ROPq2vx=E7(h4R zV)Hkm1sI!J^UYrfA_+ikIP5xb2$cK_ZxSk-q?8O|(`2YO2^v!F9{~mcw=xPq$Xaw% P00000NkvXXu0mjf=r5cG literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Nerd.png b/src/main/webapp/editor/emoticon/Nerd.png new file mode 100644 index 0000000000000000000000000000000000000000..01addcb01b4e7ca31127419f5e5a9bbf29d8389c GIT binary patch literal 765 zcmV_yhY+F_qv#L<3JC-n2rmAJl%%Gj z7=Iq=?0q_JOCze2j~=g4|G8X)Isew zQ7dqVLZSD$TrOO%*R$Pjw?2h~J2yAC1d%enD*p?uR_pit{QNU@`OaiA8SHdA^3~PV5PoOc?Y2OD zpY++^-~R>;mj(~}-rn9@qtQqPgJH<#<|Y-3MG6Lkf_y$NY@f8iaOsc7_hu*Vm$7 zU0tPvg9DnHniAucl@$ty!-U$1c^m~*=p{d1#A2~w>M9!>8}h})gwT)z z>GbTR*Xzk@wUWo<5h6Th8;dYFq^-5JwXf-PI?i?1Dn&cbX0y$$t*xIXlc|BsB>Vzh z)S-u9BMW0`^;)e~{e^}eaF@XDuPgA)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ<97#k$RCwBil0i&kRTPH5^ZNQ)E2R_=&aH>E zhFKX+hzpa62|GeGZo~~NNEC4+iA$Y~BxDTDjF}P}W(X3RPQlvg>%0dA-n}m5A=4rH zCx7nAz32S*Kj&W2T5}fPjE@gBT=(i9w{E458;$7k;bBw^;|Kt)kHj#3Ic_wTTSZbK zc%w&zJ4)RUU+C*AS6(j_3Lm=V^3@2C?CK&C4uc3Hf+0e&QeoS+3CChbG20IIh}=l+ z@4pEkT5G<%c=7Y{+S;|a2;Cx7n_M=-)tbM6XGG``;epo3SC=opT)cVn?hA&20O9U# zJl9160jzlZF@eK}5C4s;RTS{MQVd+W^sanlSwB1{@=mbn*4qEL@^JuI7cP7+*DXsw zZx{rlQ2+vw2modzLa?p);9`uGj1TN!zw{sZ`R1Lcs&xGlAE# z*{mcI38tr~F%09}7S2LzjZ%tGD1_rU3cvuq>+9=#j$`36&Y}Vs sLpOgIIdK;_iG2d-GxScV{KCHn0Pu5#d%y%G1ONa407*qoM6N<$g4|%H+W-In literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Sarcastic.png b/src/main/webapp/editor/emoticon/Sarcastic.png new file mode 100644 index 0000000000000000000000000000000000000000..92a6a7cedc6517a97f367009bad227d6460159ec GIT binary patch literal 799 zcmV+)1K|9LP)|6G96OBBc$qv=qDvp7rLX^qTaNlhEcD1W{0rxtoiJmQYF?DYQs2Xpz#iRFam& zruisolJ%LF-6aWL1Q(ut_uZL!-kEu3S5g#({>LQ^5=oMD3yTf70bB!Q)zk)BKodAe zT%|Wo?jdksai-Jh`SJ1bDZAZ%-(s;iO(qi))7910?`E@EESJkacXxL;;QtA)iy$lt z0yU#M3kwU+FD@<)I-QQ9q1|rxq1OiA0>>cMqg7>$L?ZLGTCLb>wUmEByp8}_vqQt(a{I9**s)07|3WeiXLd_ zy|ipObBuskpe_uEbLi5r5(Cky5b|(6@y}kXF4VYd| zRjj#Oj-aN#=QW$n_W5uOru-XEIOlGG%&*qg)?TB$n_Lc;SSpo>m1LFp8Xg{|v9U37 zI2^htAZ*Oe&L#?l!W$!(jH#ARPEMK=6B8j>mbv+ak)S{zK%r2Gg25p9{eJOID-lCl zPb3oWHa9mvgX2Ja{m6pVdxF!Z78e)s#Y7%jt=1s~S}-TKIU~q^&cQgej!b`~QmHSH zKMT_aINBN!m&n;!fk%K({f+R945^~k)L#gr0B~>4fetv7zWPl$iLIT75KnZo6Mo0WM z_4zvI@t!!70~2)N=lyu+{O`Hv9xuaj9Q=>QY+1XF>>(;-7m*6D#osaC6>`u%=!KA-nEq0yMuYPH(uL?Yow+sBCZs>pq>*ZXQT8r4{qo6Y8Z)VN0>?J1Q?9W62p0~Z$; zKqaxQENG2vTCLXFhI~nbuKzhYf0RfhQiM0WNh1;39Q&0?i z20s`3Ua!aJNUPPt;o%|8&#BreqSIV1_YDh@%h7JPcQcs`m`o-}CX-+^8ZY%Wn+>oK;pF6m-_&BUOnpAz z5&m_)P*y3bCr+pHWgrlEtx~Dfo5>c(l$%1K0I5_84h{|=6bdcs_4<3<;21xDrHCl2 zr^RA%6pzOnC^S?k6b$Y>$7C+$a=DU327^JrTrLmsD8Df;nMfqkMxPJpo2Cn6Hl7m_ zy@fnP%)&FGK-7ZGh)M<77oL%~$PW^sV3;lMlT;98HUJ@V5msO&I{p!00A7{;nDge$ QKmY&$07*qoM6N<$f*qMmxc~qF literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Sick.png b/src/main/webapp/editor/emoticon/Sick.png new file mode 100644 index 0000000000000000000000000000000000000000..93df44f99d92d9ebf1645c073df95500bd2ac7e5 GIT binary patch literal 4355 zcmeHLYfuwc6i$nX!eCn&9YxV?q!k}z^Wv2zA_*wrWdZ@DsO@HVNmi0<*j-4#Vk?7) zQlVl8iVA8OtI!HK(6NqJizf`FLDRO1d=9-4`1R)M~@_IEkzkcAZRj~I3@uHCo~{0BqRjn@we@-Q7`AK8aG%%-zQ2N^UHw%H#+)1XWp#ReS+ z(6%d1h!`A6Xybi@na%-#Ozj2y1agXa8o3J9CF2C$L!O9@&_md>{E39q%M^r|DXn1*fZh%J zGrFFBFlzl@aMG7T~kRxGw6}HQ+%*7x3$g^ zdV<*UZQ;!Ib>#hqN%E$`+Lk1!o=`{2`i|8f;kEP&O1va<4c2h4D(=hH-dlsYZhy>@ zyu9uG(&QP|Hwx!Y9v45Z%Bv>exH_rGbfYWds?s=kro*E;luTNX^svixRejoRc96@L z!0yF+cUG16P2F=y`jU^g)!lmkJE*mye&fk`hdMve)xsSy;k?>g3htCm)3Vy;8q>s{ zC-Y8QuSEj<%@xqWj=K7q@}DMzNL3$ar&Ju3{~+`%nU(+IXS4Hb%hc<8o>K~^|1LPQ zuu4+V^6I(o2YpnI=^XS^1cREgwk(I>TTpI zb?*GFU?inkI=?JqKe;wc4H6S2b6O@`?sh%)!7P{PwOd&(MbV}CE8=9L^@w;|w8s@+ zwLlwvy)B3umSEw3v`LDuDir4h@fA#3{W$inahOEt(_9@WR)U#RALO&#(yZ1pu>m5mL z)OJOGcT&Tr9jV+|1M0>;-5r_YP)K6vW~{ReGaxN#HMs)heT6ts6CLIe>g2!bv|q{YLHzaF8!oveoz!eU$57DXidnnY{1utK9x%46EvQY zk~bI(#x+f2g7ByI{3Z`?l<(8b_X2^yOH7Y!bVH&jdP!(F9I|XS%SNLSqcu5OAsg*k zeJGYRNXUsVxKKdW>2z2+oo2mW?_|Hw9`~Ubo6U9?W|4BeoJ=M;N*6{0euPtlXGi?P z@OV70C?gfclt`W64#zs)dPMGzf>VR)BqWc=zNJE|=MKI^C}qi-lpc`cO=>*}Q_r4HZN5dcChprP4d6)9L25LbI_(qp>eM zu9-z55$1Ng_ebAsHgY17c-!yy-=D!pLstuf!9a<{VlV7=yMvrCGr!-@!r?Frg+k2d z^BFdNMAUVa$z(oOtJQDN=#mgsb=YdPmic`Chs))XkePt=x2VC+;c$o~jHAs_k16_R zgnvRUl}hDmwc1z2R_Ve7%X31a)DzF?B<3^X1oupzrTK&q*Wk*0PE<-pIPyN(O;N!D iGc)I?CK?a?Ex-VX?j;Qq)DEZs0000F<{ z|JrJ>Iw(b(h=Z0aF6kf=!43r-oLn+=P#39)C?z=9K?H+t;$R_D2d$(@sFXa^Wz+bG1*0dM8+o;=lWTjrUYb8~a2eLi2GAPA1O zwl*6+uh;9pBuUB_3We2lI{hIS3{JyxUgK{YzV>MJ-qeP&uvSzb&Xm=cGb?H~n^k35 z-hrYhI-)49heDwd%{4J$cmv0e+&FgFW-4y8q_R}YoXWqw714N^P%FE_qAoT!H+N(ZYD>aLSfRtIRO+$Iq9Nkn!?y zp3CJ{yX-S|oY++3fXoxN{1o2}@Ax@qNz zy28F%tyThoz@1Dc^AtbYM!8&OAa-eJXlQ`rIG%29RYw%K*Wcsg_hoZ>vDF`TBDwVd1#bV(*v{)>b7#kaVl}IFB!`V0{jCyCZ zUkcX53BUtbu*QH6ZBH4HG}ZyUn=KTfSu-|9`?avzm_jt?6h)&!5B?Eg0P*?b*7vUY Qy8r+H07*qoM6N<$f<4}94FCWD literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/ThumbsDown.png b/src/main/webapp/editor/emoticon/ThumbsDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c368bd862e4c9491042bbc0144dff0025404c4a9 GIT binary patch literal 4067 zcmeHKeM}Q)7_YDi)DO@YGIh@LFuJJi^%JGGXlYTJP{&H;OUF3wuC#FN)w>sa7~I0- z!_sVt%ch%#k;pPK5m{V}8BAegY$7UF=EsP{$WSw#5@n0dA?|u@p=4rMGXJAV`}Do% z`Td^v{k_lo0nf>2IhHH z+<)I=1cvw!P^5wVlgcutK{|>iAca^amWeP)yc|->#d4)AUZz+D$t03Bh-5V)mx!cm zR1&31A%y}TI8g|xY22bR={E$@aU%_E1;D975SPm(cFDyQU4Tdv5)u%J43Wu1T!e@z zaR8JRIhZ&fg`Y!DFc@uf0vqLke4J=LRSYyR%=w`JIgX8TJBw+OXT~vvAPGC+01P4( zOOeocP6?B(zzUdAn1czZ%;}A=sFQ<85Sot}hjdygKrvRz`E2B@=gQnyPDlsWLCD){63INr2wX3~w$@xp~Kke8x67ljrdv9~h)ygst>kvj=gRAQGkt;sG*<=`2{`yCaC+_&R z^4LX>EZ-KKdop~^b?=yU|BoXZuO6)G$e+Ww%F^3rT`3=)o+Sv+OLDjBUzu0)MbB@S zPvj03p2&TAsXS{{Z0qAEBl}EW0(bLIk8>AoI5>2lEvAI+J(4)^N z8_116U~JxcB&EIwJ#^^k-R&(AjZqNh*7t|~89iIw+tF@bQ7rv5^$PvXzyV{wOix8 zo3gaO!b>LBGVr{i;};A27Dv}aDrKUxIa@yJx*<)?cy)Hf5UW1?3rWLa%Q~V?A=!Jg zTlz-IG)L#}sg~2>rOuYVGlLK1^*xacP{UV*fnkWdAH^3`I(i2aX)t_!!tVjO4diOjhXgYSeaF^AhIIqjsE+O7Cxvp zSGJ>jyKf;YKR&(o_nQ4Rai(L-i1nU(*>zrLc+-cS16_F%HsZUmGQpO{j7ylsgA2d9 zYIqt|+Hm literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/ThumbsUp.png b/src/main/webapp/editor/emoticon/ThumbsUp.png new file mode 100644 index 0000000000000000000000000000000000000000..9c36943673428e09eb0670220b499d05992e0506 GIT binary patch literal 669 zcmV;O0%HA%P) zs_W*Q&5jvmO&s{|?9R^l%{gbz45#Zl;W&<*&?L|UkOmrqWVGG2y^rJVaj8`LyjU!L zO{dd#I-O3zn1Hrar+}nfF85y3G=05Z>#NmD&t|jlVEi@~;s5&*wvrMJo{R^?EO&(dgUpcx*serQ6h%=@8_RK<$|nM`56atzcj6bdysls#N^G#VMJ&t@}2FmCh^KB-hHUt#`F7Q`{v2tF=Cq0p;L zCi5m74nO31{!Er-;&eLEvuh{~xmK%P<@5PVnEM56H&!5{og+(GF?sKsqQS>eJv6n#cLx?X0y$gX5y%auFh7f|{!%`c=#01*zio>WgqoXs^ zIm2AJyST7H1HZX<&Ybg~bI(0H=Ryp zjDgr|RAeiaN<9LRL-?xmFKC)}oXh3*=<;tgo6T2-VL0>od<{M$x~{v>=hHr|R_hID z-1NaMmPjOWwrvw+I2;m4-JR2so#V**#N+V{XzZX+Bp3|FXh5}ECD;-;$B~8FSRaf< z4cz|xcszdV^Z9sya2$88zF~xIK@gr|kpl3*qYhOJ zg8I;Km?nY#aK~gaNgm`M6Mklr^lsXPn;7KblfAVM#`Jo;>o}<#|dT^0&W9w?-;oVggu{`cZ47^u7>IzV|%8 z-}An|_j#Y(TauoZ;wuak3IqaQ^?a3vvy+`)pYh!9`)wa*awY&I=|BdR1FRTB3X}w; zCn2>N%Oy1=Mii`UA>|zSU87b9bg2tboHC0sXN=fpra81gAWyK-7@kK0NKfV(Eeg21 z{sase2?d-PohnJC6G?+{ej!6<6sBqM!aQ6?zzOj}xeetA%p|}do7rSxQJVthc~S1a z^DzQLdz^+N@Qq!SCiXovWu~aM-;gXn0C^}Lc87+;GM$Lhw5=k5)iA5qMqKG(D z5{*VhK<*D5FNEX_k%MYf$?kOANC6uFpiu;|TCHMhq?lrIkqDVghDfA{R4U>kL~MZt zU^bD34RKPqI8-EyGe#O1DGTJ}#Pn1?P{1(fhuq`@KEO@qGbWyyz!B0!nn?>_kqB`F z;vLT^p)uwf06PG)ux^z(y%8Hma}Wu_@G(P>w1EN?YoO>CBM00(-aDn526z;g*D2@# zmRl9hPnHD);vK=m`F(O_ADA$jiZOX4x7W#-i6!|2gT72sp8+tyFWN28z=Tj`J}^)W zn@+Jtr<9!EsW2obaMZOzK^^g~0lgya$W&XvC$IBOloG&e}2Egrx>lxQrxSoa# zG&OfMx%?z$)*BVOq{aqX*zVZ6xtNYi$!s|hMdwk&b&v(Az|HQE&D8TMGbmbBOrmrc#*>>e_ zqx`8-=^uY{**$x=Ecak0Q8uyvtCH0nmMPhdiFH0LS+OOvB0{3{VB6juHcj}{?ELzl z@YGA_`8&*+1H};?+Qok@5mzm%=*qa=cCfi&VHmsn!SUnShXR_STHm?a7go^{U~i6X zPWtk&?xCz?N&CKs%eJIdSCy!4k9)7bXpg2KVQcGEd;HIv&)=DL_oSpuWN+)ch-cSa zj^F&<*zj?UowWYQHJ@G2>U%F5v?uL-rPur3Zs>}eDx9IQ`p>;ke7bXX)%pC=pj}I? zqE+VbvxhI-n>$Y>G#AqAPj}Yo>kd60+a9vw$+zl^SO<|+S-Y|Kn7(#G&1Inso$>pT zuk~qulWvXwQ*%1dzq40MFG(-nSaxc8Pl%t-bb6g;pX0_y%O&9|c+#ovzWzxQRg#(I z$yIe-ekc{Qb@o2({opd})3oYizpYzUFS0eHm$vnw%&U> z^Zp;tGrvy{cI@A7MQ1eV<`g}($){{uxI0kPa;=iQ=G*z$c3_dBsHi%*-;o@%RTLFi zj{N#TN|NeFcFdw1B`I~a9g(~ICVWwDQ3T&Ai#xh~ioGc8QNfPT1=??db)T^vZw5Vj dwqWgRf~?}6x8laEp5VNTtCP}H2j?wc{||~s;#U9w literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/VeryAngry.png b/src/main/webapp/editor/emoticon/VeryAngry.png new file mode 100644 index 0000000000000000000000000000000000000000..204ebfe946ea934aa928b121d36be12db4acf480 GIT binary patch literal 4195 zcmeHKYfuwc6pjukQc*-}Q5m}?z%U5eyg-SG7+wN}h!7y1p~z;lAt{?|+*}|s*iorP zU{q{f|`vk-=a%MTCdMQr5-%b(lc?CbVoyq|7W3DhF|d3S=TA#*iop1qMZE zkyI=eLzJsl{)~wz@Dhzo4&>2MLX^<55pxXNsMS+w2168R)FWsb1|S8Ns?mv=eYK~V zkVYwHCi+ElqV>U;S`(f{VsTkg8Jd-b1}K?9DhFK$7l2Xc>X+r55(he7Q&nbFrVYgT`1)E z2?bop`e811ghZrLC5#OTv!0GPvrc|2b#!q>1$ z2N0vL&cHHLSU5s314?T2Ktt#tGbf@T(t()Cr2LSTT!{{H>(fb`W>%swhGSYx2MjQm z&4q`?Q%b~YQq{mP2-6v?DpPvHMnq3RI50`a3`6SG1RxA*LjPvupqs`IO&OsFsDR3A z7IY9xtqP?lYXC}kXao(X_sNodaKgf9giOPzy$(Zg14bu!?MuWIaR34IqOAfAPDm(8 z2Wo;e#1ICJSxU-pRu~c~QK4m>^w1)?1P7LpWr%CcIty_`mnvo&eU+FBNyh;bwjyBj zuGk>>KvdTLZ>3=G9MnJktoSfBS4g-?HK&qAFKhZM)t;1 zorA7{5!ho;LP?dWrGVc+4#<(nWf-1FkW>$OBQ{ivXx`?JCv9H3AVhR&4QT+>ZdjgC zjfLuI@L*H3R+F{=yemVi^{&WmykkjhN{q^m$u%mOY(Zmk*_0TS9g}NRGTDO02$9H)U0Y?*>gmg!OS)ft*R~;c zm+QU=cG(PX7eW3^kNR-Ox%bM9llGk}tZ{y*-g}|IzR#m@jWb!5b+;_&m{`!ZRkl2` z-rd2&BdE%=dGph>cK6nz^cCR>_TncQH@+_IYi>EuUQ?%1spPdUdiHHKHM3u`8s`Od z-;P__;T#__Zp(eBca~kwj{!5TRChj@({bc0wzI=;@!pp_x=Kq+?^Im6$L*Rrb;^{C z1N-;i*!xT#mi9?8<(QJ&a5%=RDs1n(vgFEv>(lekD85v19?zcUAYxT_PA(`YaCThJ zm?UX&nBi!jlG1uAW&5n$25xP2^Gx=bp)QGV%O!8+(fo9FT5ifacF zDqhZYbKAZD^5e4p@!e3qA{VVZ1K<1@JcME^Qe2})mO*tSS(gs`3@&^ zPZGO*4Uc(9$tzkhAxDyS@*2|DKL2V@&khGq&j&{)6lxdM+4URU4kyen=?k}SHIbTK z8Qx7!r+fZZkmMt-eN3@B<6uHvvU|CwTOE3$rl#g{w{GC0t^w4)MDCLi>F)C2?%fSq z91m}=^PPG=UDa9lOfmmjjNxDOs;FEgULtny7jKw_6WY$FRs1s hZFJhUe&VZXDU6e68}W5s*;4bhKO$5bax^Gq-9Pxl56A!j literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/Wink.png b/src/main/webapp/editor/emoticon/Wink.png new file mode 100644 index 0000000000000000000000000000000000000000..b79ac9fa7189a70ad13860325ccfbc8dbb2f83ec GIT binary patch literal 688 zcmV;h0#E&kP)Ky)*~>Mr*ZUlu+r|uOn&zPpsnu$`O&qhgBIm3<&r*XHIdOvv z0TecyO%w_RftVdlYd)VBy4(kgqTG*wvp@|B&0y*;PNG(J$g#YYAWI^hPSb)*`v!x- z1*@H|oz?60?=brjZ{?!hZr|O^m{lqj(Q37J^TA+nFCatFXf#gHoim@B$K!cjDwWoOa zYPDK`Mu$R->RGedoMf}vA1;?`49gV!0xKNeI2;a*!lTh>hPV5B;R|FryLvY#qd%~8mBB+GfInoD&M5R)B*YEc~ ztE&2KyWP%Ad%(t?EX!Z2)#`hSeMxwDO!Bx;D7;-P7P7AECdYoi{|ipvd_Gr@L%B~l ziImA?UK7cLPBs4p%jNP%E|+`5%YRz0*FUaSD|5YGAAmKWX_^JTK8|TL8lQ;c8JMo) z@p#TK3?>MFwC9~X?kM+T=Duh&`iiDUAiDB;z1L2nQzU%PNrD-<;1KEOlAJygkWD5N zRxX#V`P^{EAV(C%yR_{E(FFH1b6v5it}BSq}PM*lxEw=y6Ph;dZ;B4fFf` zERjec=nigV1OfpMm1orqG9-XZQ51%K*v)3svT+dNFk_8eW`9Vxo6SamgSQqoP^;Ar zdIf_)7K_CoE^~I6NMYQ9=og8sgu~&eQx^nhvssqU=dE?S-L`H9BIlu_(MTclr-ahS zl7JG_>2x|rz9dN^9V&LaUAa^$edzUi4X$RCa6@>G zKd}9b%xrk<7(5~OP$fYld?)k>U-4B4C*CKNE7`W-c(Y6gbQ=aw{4Kx$a;Md6<4|Y- P00000NkvXXu0mjf8-_h{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/emoticon/ohnoes.png b/src/main/webapp/editor/emoticon/ohnoes.png new file mode 100644 index 0000000000000000000000000000000000000000..6d49a94fcb96ff638a139cc7794927d3c6da7d5e GIT binary patch literal 816 zcmV-01JC@4P)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;wn;=mRCwB~l+SA$M-<0Dvy!7-Rh9xZiXB5@A7V=B#ULGmac&NQ-U>PRAlzFo z!v8^hN&g2^T8IP&<9jd7!KRpCD27#Y$e~bzWpJg$vKwo)V|Hif^`aG$lS`ljALiGa zH}icn^OT72f0XRa0j1P!pakTBTVpl`hyV?I5RuDII#NoNfjfJ9drvBr%A=W?nFpTd z-Ip{bl~U?gperI>0EW`;*6a1B{eJ&#k|dI1jG173uHWys z>-G9mU_K2`rdq8&34)*-MUi|CgTdha>gwvZsj_?f`};p@t>yaqdW6ff|EJUn~>+;@PvrKP1+Yb{q-S6FLFl4PR()L5_A!&=MY;^ISK)&WYM=gnDb$>;Ml z8Vx#~4%S*kWCCj~olb{Fqd}=u!di>xd2>L?0bHe2KHaHStI=#W@qPcJx8nOg&1REY ztu{KH<2VJt%K|wO$y#dx*xlV_V`GDIx%`o%<>h7O=jYkk*5wmm~?fTn=N*M38S{jKLT~ zp->=65-u+<-vinK{y9EAer=2)j$@)I8r3P|{c#&(46Rn{4bWA9H#40sYisM5qobpjz*{9ED5bK%!*aR&XmfM3TCG;UDijLS^4rU@?e($% znVByW9zX5|K``)r|F7-s?LSUVPJRboiHJ!ZDIfzBfUkjtVH$CP>7lY9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/arrow_refresh.png b/src/main/webapp/editor/icon/arrow_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..0de26566d4102eec080253c2d08985ec58b14838 GIT binary patch literal 685 zcmV;e0#f~nP)`!iy8(2_#ButL^3%VaH2WCpD^U)OZxp@C)2#hU)y+@T%ZNzJigNk%37 zz-WYJwT%teVfiEI+B*@v4ey@58(ld4VY_&5-ox`e@AKg+0U-I`y79bmuw_~y6+4rZ zBG5EdFDS+@M0OSE`>d7SUDOzKZ&h*4eB1iX7tOd9RiYtW2mQ--bUahxr1`i{RG@dM zL#}_X=DDO1{;UI$pFu=dLYT_=5d8WC-sLfjr7UO-HKMAwa=!>)kEhvuwre zuW3yF@ZxFCkI*+ad|5kOX%5zu8IQjhan)UqgSrFGA_0nQFn@Z08DSEUToCSz4Z1ls z&fDbq$T&7|6iq$_uDI$@q1_kQ@dfqk*0>{SDL6V)94@)ete)j++*>bIc9sj}Y;R1o z#OpH+Yt-^4wfv{nern^iVag8XQ2>tmIipR1P$QlnRqTL9F}z+huvQIMFNom!%h zl$xHIXRGvn_kJaX%oJOta8q9c-vZ~}1OnC3`ysn+hwS0lBFq zi3%0DIeEoa6}C!XbFF}Ekg&dz0$52&wyhGxQ4ziY3eNdOsS2ig2D-@xW(EpohI)p^ zCg$emItoSxh6efuM*4Mv>iKmOL5>Q4jB{Rj!&DGS@ z$-vOj(Ztfg)xglu!otni#nr{x+|xtCyr0bURHo(0 zgFTiL;;r;rKPhat{XF?pjvBYe;ea)Be&2ew%;v}L=8Q8enoErQoBB%S6I^)y>&$!8 zv_ZK?{Sl`^2ZNgjV@XGu+byoZ*|$0qrP6EfYF=ghs2Fx9>)LBAzyGW&P8VyvvHH)j zsFs=IphL;0CeCxMk_&$Zvdwk-daB0U-SE(Z3$NC$>fIu(_(Afjmv!9M4$e!Vc48{O agc2AUj`f>7z1jsX&pciIT-G@yGywqLuFzKi literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/attach.png b/src/main/webapp/editor/icon/attach.png new file mode 100644 index 0000000000000000000000000000000000000000..ea897cc9f18ca49aa0f30bad4e6b67e4afc7f498 GIT binary patch literal 391 zcmV;20eJq2P)`oHYyCmI1nr3DC<^9@PyNudrDc9~P$75b!T6T2tv<*K=EzTZ+r6P_ zRz+%oP}n`HO=N{yXhvI{h!_0ot^nS)JXfldwbvK_6nsG2Z&Wi&v@PQ zheULFT39nvnw}fe2u3u2dsOe=oVI#j9M1QC>zmd3XI9C7d+1ER`oBP|zA^0tJC|RwkIug^e1fA zX~N2H7aFgMFJ&|`u{>vFkyaX=K50U-_$2WeLXrR?y%y9osP$m;9(wLDa(L0IUjO100%{ufD~Y>02&pjbm4v#?whc82VKwMSB#SqZE`$mB-jcCHlU+0 z5!eC}fZ@6i#^osNm{8QAUxQqp!Je3uR3kxXnuJ~O)qerH3OWj$UL38Ff>!fEx(x_D ze9vUyrvmBUlf}BOj>p;pw*yU}8i3vdQv(|vr;&lW3vL^{HjGO;yJh@AvLL%V=8X-d zj-N^keq9GM0OdgtfE|S-5NpMdyD8XjL8D3d)Ci3ms|*JAHOZR#{F@d3_1R~2nP^IO zx1jHVVL;UcM?t(JNH>#EYr=^m)YgmC{@kfR@+(bUGOoFIyidRT#pP%sAgjUt2GomC z-GbUC?3chRN8#8QO)J9o??pQO=z9z5hjj@+!++`xv!lb9;ml&Wvph&Nw86?bNyh%=cqNQD8i+$LPB!e5mg zGpxOzX7}R-bs>C2a6nYto*kyOG|b@Xj8Ib}DhS31*TztPJc)IANu4e{-2WFIIaS?u SuzCdm0000b^}|6b=Y6y(;Y{!a!g z@UQp#@Aw}>L3(}s|7f5BUjeuKZvQRjV<2U7yvu*H{aAbvQ6K!@3oKzW z-{Qa8d3gae1^)HE{~f^!v<1}u>;4xnKvUpW540I-w9J3a{{r=B3T*2g{_BH1CtaZO zpZ`6V0*V5g1e5i;`_=Z#_e=H*@8|93RG@lX;D!K7TKswwko8{x0000Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=Owd|HNMlZ|>D)M67h? zOIjz3DJbk0=97q(mSBd~-ilc0Oupt^z$#N6O&at_s8u-PL@9M^gQuq(+UH^IB$&*DHP!HzH+vkEzC?S52tN1$mKhziPkOR=y$ zhl#aO1Xly_M?EkN>tM6E5T&Ht4dh{0oQr6Q1b3J=sM^ACOsvD=TSP81#0oTC1v|Df zgpp-GhL(KrE_8t&(jeFR1W%(osQ12tvSpHp_}~HR_8G{VUO;FILQv(P-b)es=)ZlJM#c>{Wx-rgY3D#Ol9rJl39A<60Xo5cneo(9g5a4q>ayzV-7%Ue2}0_ z&TIets{Cl`n(nefrZ+9F8|N&Kp}^StU2b+&pVj;XvgEdBL3Wlp00000NkvXXu0mjf DwZ3{L literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_apply_img_property.png b/src/main/webapp/editor/icon/btn_apply_img_property.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ad8baf8319b58c909979f933c31b7d875eb394 GIT binary patch literal 3143 zcmbVOc{o&iA0MuerR=3JV>~V=U`_oFSA7k1Omz1+K`+? z?<1mHLt0Yw{3YPGwGDN^$_;Sl9tDD^d^(6gI$2#5(1hC~~inwlCyPzWRfjzGbYC?ljP4voSg5RmT|RAh}$JBo86 zk-ys#&CH<;0N~-^@Sva|SP&Y<<@>>rSS)r;1BEgYA&dmU9Dph`;s|tpD3Is^Up|uu zFu5Ganj+PQ8vvL?MV|f@0-NW=^kV>mpW+NMtJv%9MyUgMR1I{-2D&Mb5z2I_+7kRIZ7c617_p|gs8kS8w8J9uOJ0PKbN`WXmz7VceHx?lWenx0tm1?J7bR<)!^9r(L?Itw)fU;r!unqH5 z5QUN$G!*)@0|Ctl8fyaM&{nkL<4!Ls>;*)kLdB8O*E7D3}*JnOZhuq zIoBnWq;;D{J+0W@an)v{uE*=rlnMFP4C4I4N%OF=dCa)6X35H;YsHFMK=~1x7xUktj+(Be7Q+xd&`FF>$aRt z<%)$6953i4JQrjFo*a(F_2X|-UTL%V@%1|4L9N$sb?Vn#&CU)O_6V~x(*TX4sX41VStZQ=HNPycxH!_#)|O^`{#>;@|I_?^ z_TYF;M;}ljrJ*4;Rgwdg&AkejF<{CtGt-}=!L`k$5Ywa~?THiSP zKYN;%{C566PFhQ5T}g(TRQu-?6{pQAWoI1TU}RChoiYBfv+I~u-PCEtw$T&A4Kgx~ zD-=~#p!i&ul2?1jP*P<$x&HQlcN8FnOoI^gY;y( z(}c^b+3l%`hm+DqdnOF0SH-kGKi;J>`|y{kKUI!|tXG&r8?`1&B0_7T)T5#7yP&a( zJ?mTJQbxGmls&nO!J=7hwRU;@bhk3O@iIe0)^s&bW*G=LND25OjpSQM|yl$%n zB@rvr6LSu=QLE=lQSQ>?&wi2iOFjE%HgnicwphSa;y-xT6WwQLoTe+E zUO;}9#;ZVVu1{Pyd^zIP#KdGov{b0LY)e&B=+_fURcHp@*#oR%F%S>yj+(ojWa{dq z6+h&vzyFeAm7?c)A*bI(n>f6xI5eaGW_SKm3)#hMiJvx9q%ZoVrZ|P&Nb^b1eywEL z*kw8ufSIdHFm`u8Y*^%VBFG%0h2N9gBu%t`r@;RbyUT$kclTKf3AYo_^9TEkA(UVwub> zbyA8t1s%E_4AmPFNMGMC z;@>&o&yANm?kn`CEi3g^_$hX_PR+?Vm6tOUYLwMmZHn*@cNOOdXG0~n#GAEai}Guq zPKw=6FaVt}iEnJtt?xYc`6X5Mf^!k1E^2er;Ig^w^Y;gi!bG1r1K?AV#UD(~+XXkp zCGjnLuf^|8S)6nUA9vnPo;>y#mQIN@d+ruxiTCQN*RbfZ@v1d2vr1M`-8WihwmTZ= zTJNwtj~5i|Q>(jo(qtT`8oPnf`-;`y%8C{6wjB>`f(%}Wd6?x^c`|$I{D4%J`R!Y0 z6@|E@`j(Vh*;)OZMx%%dnZ12c?ZF|tA77PtAA2l$@^_q9%~&5)ctzbGM)3BMv7y-C z(th5~sbjVf)A12NaxYmcCtQy?DHD)*W;FzvBcv$DX-QzFL}t`3=Vk3#YmIYLJNuYM|WdLayfOVLj-Z zR`7qMaJEB6k9QskGBf;0g|7DuI_Nl^rdCuIH<-GDZQ}|F3>hXbL18Y!a^Q}P;@+BSPyFrc??cq*xXCT9d*zNFC%8>obhgV@Kg}V-~wDGpc)xWT1c-87{wEFuin2Tn>co WJg1vV;Tf&{+S^*$kqRxnBmWD6Buy>= literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_close.png b/src/main/webapp/editor/icon/btn_close.png new file mode 100644 index 0000000000000000000000000000000000000000..9923f5377f8b7320aa5adc5b2d8a4459c172e06c GIT binary patch literal 1389 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2co$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa#GUy`Y4UTL84#CABECEH%ZgC_h&L>|v`++-|YNX&zK> z3U0SJ;?%1Tbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWpsozVHQjDdmiv8Rh;NX4xw zlfC_=0!5DhFJ^CixOIi5FmD&XnQyOQl(4XHpm<*C^|hVayI)>fpYVu1;qsEZn_g|} z*2}tdBz((KQ>{f!>ldv!>QGq0V{BV2YNEjS@8rpy-|tk{Sw24}^YHU_0iLyPyJep| zJ6W?rzg5TLl5FhEkKYe}VVEI2^P6MYvcz1?E2I3m&U9UBA6rCQS4E zO~tuur+$A_JFhu3&gS(8$B?U96P|xzxc5S@uj==z2cZJJhJU0aS}ms^T|Jjq?zPRm zcJpoRYt4lNRH|!F*m@i}f6(xTQ6|s&`lVV*H)Q73hy@4-G5yV*`q1OP($7P^Yp#ZU zZp?PtwW9v#Cz036!3E1EeQsZBKw^u-ab7WA7GS`;)PEpTqfwWyu2hIz7`n zi}_B>UTZVWJo-cOiSydV=d@E-@u;NmKYAN$^Km85gKHNo*4*5kt{9#bSTkphRQ!Q} zb4rEU??dAbb1wGe(Qcjg!1vg_D|bXp+bT|_>M$=YW183^9X{#PwVa^WOeM1(MY}pJ z)X>vCXSKhWBXqM*-b}aOlRq|_1$fMR!~Hat;qMRq0}P8FtX-j?mDL6+06ks(T-G@y GGywohtOAGt literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_close2.png b/src/main/webapp/editor/icon/btn_close2.png new file mode 100644 index 0000000000000000000000000000000000000000..3cefa46fbbba67a64b917cde95b4cd8edab7e5ea GIT binary patch literal 1220 zcmbVMU2M}<6gF*FN@=0h&`PNW7xOSCk=Rb+rm>o~PVCUEq-1GOOD7PHecM>AeT{uX z(gK1Ogg|OV1$~|>Hh9_%iZ)lT-KvN%h0K_!ZO&aXFX*wP%kg#Om zzw>?HIp?0^3(5YyjrH5=DT->0_ev=;ZX@sJx?1x6=kte)WN5|m5FS7yIIq}{5;c^8 zAZ{q5Fa;HD;^-aNNm13Bo*u$OiG6~K46owacngL_&=l3#U9c2&3}TRhqq-TUpWXP8 z2D%oe2l)h>u%a-l_fFbyV6s20PL8P|jqdIOodtmq7!WIh5NM`hbt(9U@|e;^nP?g2iQV;R=Ra6S(g6#PDcWx>ir6E#~K z5mHiYMT@M$bQWVvV3>S9@6G$Y$R1_5P$=Yb_;c+HRtQ0(^v#Y`&K}WT93+u=P zE~An`IUJ^mr{xd~E0I_wHl3A3k(4n7#bP)w%NT|m*Rr*PQ}BN`*0grg6BcAr&_Ov{ zCHFD1s{$sud%KWpNW2mD+d8=vWn4mP&VVM4OJSOvcr{%UA|mgPMMEOb^RmoxTtw{X zi19IBAQ1FREFY}tv(AJMZEoLJFEN55H*HV9H z)Mc#pJ{e<(GmKjrZl76vCV_g68s~XZ&FXNJ!F8rEVx_4`# zuK3&3Qg`F?{ort8@k&EahMCjF=i=iRJ2usQfiF(&ZrM=( z>hS_Anc*~=gY*40uCPj2JBM^|pT|CPAhFI|runf?!J$BxDT literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_createlink.png b/src/main/webapp/editor/icon/btn_createlink.png new file mode 100644 index 0000000000000000000000000000000000000000..443985f4bdefd6e389c826e41270e4fcecb14794 GIT binary patch literal 2481 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_down.gif b/src/main/webapp/editor/icon/btn_down.gif new file mode 100644 index 0000000000000000000000000000000000000000..58e3191431aa3d6e49f8d8aeabd2e7b26ffc0bde GIT binary patch literal 1113 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_up.gif b/src/main/webapp/editor/icon/btn_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dfaee269b28a21ca711e32f617c5a86c732b694 GIT binary patch literal 1105 zcmZ?wbhEHb6lP#&XkcJSO-;Ra@uK2??g-xi1((Eh+i z#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPs zx)kDt+yc09tj`|#S7=pojr5<)X5Xaj~zX7 z_|U-v`}ghLvwPRh9ox5U-LiSp#trM&tzENv)yfsimn~hgc+tWI^XJW-Gkey|8Plgt zoicgS#0mXjScm6wKdgMl@;Y>r6t8hg$4O}xjETcnHlM6sVT`x zi3#y>u`$t6krClxp&`LRfdT%0zCPYwo*wRQt}f0_jt=&Awl>yQmKNq_rY6Qlzzn6Q ztD~)@siCf>s-moDIqQ*-&4I`@It48gO}o5NTctO4g5gW~`I literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_upload.png b/src/main/webapp/editor/icon/btn_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff83e57927a505ca9e21c5b4894d9cc656478f0 GIT binary patch literal 2322 zcmbVOYgAI{8Ya!eF}2J}(=kM|EP)LO2#JbZ%mgoZiKbE!w#Xot00m6V)HKUZb?o9~ z>NsXL=4GX&&CynAWA`+*j+Zn&mDyBkQ<6oeI-APQ`O%smXRo#Q{w~k+yqE8N*ZT6q zLISP6TlO6c2D1uU$KXQ$Ezs)(p9g(SlN*g24r(S(9U)IpYxqhKMia{8K}3+0F9NwB zU#Q!94fKJaLUANd&Ev2s0=X2;H)7CQsRCldU_O3Y1z#Wm)rfddB$iQ;Q!N*e2(gfg z+(6&}90eUr6t7EFf)S}9k%Cl-fGkA%`67I@6i7e{s`&`5G)bnSXsO6gx)f+^T*e>~ zpCD=p75UjI9w!Vzmn%U80S%x801-eCv1lybi$o%MB5(i}zyLT57Kg%;D0mzN01#gu zBxFq~OrUTXtS`2p85NnRRx2nNj7FnDYw&2fQiQ>h$z-Dj4u^seD3wm8=4(+hmFuhm z15^o=Vue~Pmm!Rb{CIh?nu>%x{TzZ+!Qp%rmZ`oZ3Q8G9%U58qXaFOX8sqweR;jt* zf8F>dS{12NfEX^Qk|!$#(0L@d&XS?r{k0(@5b}l+suV+q!cStz1<6uSrVe6IkBz%3_OVd5Ex_ZJASZ@MAr{m~e1RM@e_hvC>HNM4V5y&KfMI#dkGzJ#S1iZ;K z78Age$#gu4&cu;sxj{0OnlBT8vv$Rh-7j44zvNQrN|3LXD=IOe#^Kk(hbCWJ2b4kmqJ$cw@4&5S7|e_j z#GplL2cI9^l4KWUm)Z54h^pLV$h*DxkX_TAEUIb(EwP!BDZ62<)z=my;0Y;{rTW; zH*0F@ovh96?3QG?1-buXwq)aB7u$UQRSRIu@MthB=SbZ~)3;`3ttNN})Hz;FG_NU* z%;s>~ZjZ*9(ngLIm)Y#T#ya=t@mMz>PwNsEac{y&$VaGYQt{8(?d(S^c(5|WpQN)# zt`;paoXWXu$a*E`}n%_J7 z3Xh@ko#V1BVW{5@^N!n5uf-oDcb`o^dv^5gKTRhlCKR{Eciy*jmIaa$3%OIL^|kJA zsP>tmzSN3=q51Rvb*ZV)LyxW~b1JsVn0|{09?w3mXRK+ie5nw77?N@&=`rO_yawr> zqcMyn@3XziN;?JK{}`|R!77we0^}^fAOA^GZAD#-Etr1&+9q!2uyw`mc4^F7wUah)-kBY-H0g)Rl*XyQ9@~E(J~-uj8(tq*wY_)ZGI2$@=ltxtC$OrK%#6h~ zd24UkhMEWWM&xXukX}kO3wS=icCA6@Ub%jQ?`{8JG@xI6XDeY-bKAorB3gI;-(`n- zl{HVBg)oZKdJ8V&hglDo`ly0n^SQ#k(&`{bY}YnSWx9GA|7W|g^l2${^%$6u*EbuzPs zS3k6|W9_Nss+Jl_RQJH;`0%>M^6l;g**hXG2Nd`p-O4z9bzopKX~+1&oP&juhxV(g zCbv%9NxHl$*=>V@t=VT&lj1+J(^Fn9RdX8QhYOIxovN^t9G1X8VAdriiDKfsrjjdUj4JQ#Z89dhqP&&zEF{~616 z?dgPsnBf;P%U0b}uVaC+S7K}Xrq{l{+kU?U4G*k%v4~}G4BXf5ZPMzoGQLT81Fwjk zIpQ<1--|#JHy!FfAb)ti#G_ks9@>S>= zM`rrw(Z^*z*g4zZy*JI3nJ&1K>7$Wkzj`8fEx31m$RS1R?AT+?4(-xSG#|f}=DV|Q z-QJ;j0GKczt8uthJN&UNxFGULLI!r8;bw8gxptm=QCZBcywW0v4hsWWr%pN&87bs0 zw4&nHo0Di$aoOct0NqjqX2i`^IJaZ2Z|=oQe8XLrx9$%w)@{y!+m_vxVl6Bd4(^Ed fJN0hHZ_Yf}n8z-laP@kE@s<+A3}Ms-#AW>l{i(IL literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_upload_down.png b/src/main/webapp/editor/icon/btn_upload_down.png new file mode 100644 index 0000000000000000000000000000000000000000..15cad1eba6defd31b988cb644b5307ee43973d4c GIT binary patch literal 2310 zcmbVOX;c&E8jcGhAYl;&t(F)>_N<015-=o$z$J(QCB;e!$&f_MVltQz1VI!<*+g0F zp=@e%U6G0fQG}vE6%<9QV1cp}0Ywl*6eD^kD&G6U(;s)vnVD~Sp66Y@_dVxJ4GQ!% zHC}EEgTYMwSPTyI-wM4e7A}Ck^I|UQH?^T`6FmnXtQO@Ra?0LVkACEKM+ikgc2s7ryy`eif{@eu+> zQ<0yX;S64vodRVTlwxj)K7;K0ipv znnDmo;V_t=Z9y|CQUro>3L33asZc6BN~RE^v1Bq?uYtq4K?pZxtQ6#_-K0vpSp^25 ziIoFr4xp69DEQEMMA^-fq1^qmAw3ZChO$8+h7N_dogw4LNB}A5$Dksi9h5*U zpkNtzA^}5Skcl{&4+e`R5ioQ*j=q+F!{O;9CSz9PYg`COz|+?<2n274>4PB=ycrBK zhU|{_W@4F4+$`5msswpbJ}_%n4B7q6rT-(BLRSDhP^Jix$+pi{K#)iV%9J9R96=8z zAVS4bflQ^;AI_&(8Gu5(6A&;JG6~{ib}8boSf`P^88{r-o5my%^ih*BG#UxN)*VYG zV0>sq8uBw&@c(2C4LO6>m&X5;%Ip$UfBNB?M3zto9j1j z9Luj;$TYgpGE_iX>~!=8U1{ol+csd^gSkKElOo)Lo7#t(sMp3MvdhnYk-U3PO# zP5kKP*B*o9*0?*v12+7KD{`6%Oj0#04^FZ?m0{n>ls_x$zBUslop?9>6Z!IGZS$>L z#S#6?9#UY5V?*!D>AGRCKJEG(k5<{8HT&{HLlS>3UJt|UJATwR*WaMQ-o9sC-ILkT z;f}0fp1TJtlOLH18XUZTK84lF6FD8M$FG`peOp_|GAwjDDnxPfX63*P3e^s4VW z8_z!cQ*PI^zi!u%eBtPt-04%mBI6mmq==T=x0A$WM#jI8KC{x&R)YhC5>4*0-Fq754&3RRJ}vokeKI552Um!*>2*Av zxjZcoTu1JFb`G5^QE=+63UEdw=ZoK!ZP~Js*VU1JpisTFZ z%L_y&{$-HG8cA=fvr2A%*)}@-zI^6sc9J7?`wI z)=WN4mVt?Rw|+!}?ixKwFErHzaVR>igG3}jP1LT9vPV2I1g z)K>rZZq|mFP>;Q@t&7IBiLiRUP-*g@6cL%4$#i?MEjfH@mq+LLsSA1Eh+G2N(o%MVm>YYIojx#oX4m=~sLo17+9;bH^pjHQm@S^pkd4Yxb9 z?b4aTZyhV&-SfApld5Z-D<=N_gZhLsswPwqXA=S5kc7-_meCUny`*bGz5172`y5iA*9}yh#bqxqOIh;P%u<)^pdn@~ z(Yii&wm7bJIL69hp$=EaHY(P~zCzBN&^bg(ku%Xn(dDTwt|44M;&7n#bLN4`1ow6K z=etzGCJ4rO@y%jU&mmOUq;|thfuzB7q_5H}@x!HR?UIx>ODQ-0+~||ta~Hw-p5)XS TYob2rZzg^|fsFIs5qtgvD)Y)# literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/btn_upload_up.png b/src/main/webapp/editor/icon/btn_upload_up.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf725b084e3e5cf6673d3acbb472b27e8c04d1e GIT binary patch literal 2303 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/color_selector.png b/src/main/webapp/editor/icon/color_selector.png new file mode 100644 index 0000000000000000000000000000000000000000..40c69f5db993ab6b3a69b0773115464cb1384212 GIT binary patch literal 932 zcmaJ=yN=U96g5ObC}Il`4O@-8EwRVWi;Q9-KN4aIM^O@KQ&8a8lf;{~$Ji6>qyoA~ zAi-}?@B;{_siXJ@?L?O~3c(sCZoDIPS>o8Uwawaq;F2 z_J1RP`^1)ev^}OnGNp+fVNP|)1OwBzXLx{ZclGQmZgN}!c%v~LTaS@Le8J8zLh6T% z&2i0E8rseRQ!v3ZFHrcOAHVRxa~1xyYC$X1@!adKBRpL9M$UTSG+e&*5HwT71bj?w zkoxCAj8cW)>LM0r$08555V}zKOH*U34|Eb?P!(Xwfi(zfk|32U^?Ln2kf8)cD2tL@ zlIo}|BM8Cn<5{-IouYx!+2vw8g`ZOzB2i3|L`cd4iDshIXf!enSuQa|DP9HCPD??2 zk}DWEb|NpN9tl9EXivzJDm-&~S%M$#WrKLvCe|=9wL?)7U{+ENw5T8( z{ikp|T7_5~;Fv5Uhh5zCBuf<{J;F96(TI@qyo>!gp(LJ@5a`1yIQ0UTB=Ht)S;!1x zY6lKB4TWcX!Sh_yk#t#wZM|BlsFKu%s%AXUv~pXo!EH4bvK zLGVMC*}#$a9J`%}_+VQw@(z1Z59;l>?qM(5L9WQmh}pINb8n40gdRfx literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/context_menu.png b/src/main/webapp/editor/icon/context_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..6a93cdaa78cc42caed19920ae622af7e35f6067a GIT binary patch literal 476 zcmV<20VDp2P)yh(bgPr6Nj-nT19X7DZ8zeUKOl_Tl|>1YLMH z=jlD?b+Sb_xgR_*#(SP~INR$20GAV7?rFuloUPPDd!HchGLr8gZI>aqRf53gD~KB} z;7=4_D*g<@>Ld7K_aG;3>sUvEaJphdb1M87A#!by06TZW*wPh{Ku&%@CmC6|-~wsq zjb0RsMFKOF(Fjbu5Fwh)ru|I#tR-Lz>qIaxcgh90?Z1KrCWc|y!1T|aZ~=a*-(Ag4 zSPUtVz{2m+IDzS#IpP9w-9EN;RO;3eG#U+?z$0h4Kv;Wfk8B+i3#{n6-UibhNOQqt z?12jeFM)^6#o@C#4HjCL*d?a8z!%N)t>y1HEak5ffl*Zzs?{nz*J?G;G`=UdUjg$j zC=)9;^kAC{HL0z0x7{1P|EQ`>eA9tOij?;P^H=75o6^EkKQu SuK{QP0000$`dXYaZs9=SbAto%g@>T~?_bH&lTUn@`uo|1bXE{eSR(AO)ESb=V4`uk}mK|39Px&03WLbv~pzk+s7D@lK^ zn+aB+sp)&Y_x-B3>;6ywU--WQNUr<8>TU0P-|L#1U&;A)67w(+> pDf@fM7q9#F25QXo3rUI;002ro52U44e~JJA002ovPDHLkV1l;_q@Mr) literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/decrease.png b/src/main/webapp/editor/icon/decrease.png new file mode 100644 index 0000000000000000000000000000000000000000..28e41ea2bb469397b2905fc8272b287101fd44bb GIT binary patch literal 581 zcmV-L0=oT)P)9TL{7iX$V@PAta(9$|8b7D6wp-IURZdO^p#W zhGj%3h}IwkopYY&+|PAgc}vbAem;r__Cgn?7OtN?KmKI17sC;NJK>JG5gvFrVTMN# zW|%vN_vh}?(%S8}PbcQ9@iXId`-X{dTVVoMbkJeoYg zZe4x6LQzFH#h^6;2oKD`3ETs7$J)T!z`_|=FnatD=0;HwL7^lRK_n3h@B_uHVGm~Ku92vAS`gf?5Br# z8{9Z~kHXz3lDn}(5=ayYND`_NGav5KA9U$9znOkFMd9ugsm+;f5|St+frNR>{r5M? zxnXQ%jM1ZG)Va%*SCi!2P^2)Y=l}vFAwaUKcgHXPW0kkyS9ex(J9 zLu@IU7soQkH&C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/design.png b/src/main/webapp/editor/icon/design.png new file mode 100644 index 0000000000000000000000000000000000000000..71cec9249a62af3ff38ee1d1131d825841fcb236 GIT binary patch literal 704 zcmV;x0zdtUP) zlh11tK@`Wovq_Uwo0hbVwIoqQhQVnOkuXz^e{MG*vVUi||+dlBkEy;#AUC>|=7 zf?$Pu5)ttv6zruGW7H~Y+hl*t%+C0oNdv`8rNb_7c4j{Beczk6!di>1jIoC&E-I}j zga0{vb>>p_^3=Iw8{l!mPbve0C9#n?I)01xKABiqJSL(S+| zhYX|#jfW+z)dw)reao-^_+3J8mqFCfEeD2$Jaw>$>Gyvyez*tuj=%}wV=-Tg@#fPS z&L8Q=)3?Bd(LPMfd_kc@z(k6vXze5Avx4~=58r>a3?YEqGhb2d>%hLjJSx38Y|jPQ zUCyH!r-*pgG^wDOXvEF|JzhE9hio9=*4*_rk`$~dYt-cgAtuxy9Qxu0u+0=fBeF;& z^Wl5v#W$aC7#k0`NGTnCTne#J4+*7kZ4=Q!tSn3-5v)WKF=4mSiVQ~9>)%d+#l4qx z{9MysLHD){Ca(=cac&a}aq{N8Jv&lD?NH*Ie}D8_lU}{{dpp^$#|VDB0)4P3h)NUdleE mCFsAYz*qF2A-4KEx5r->H>;=VK>mmT0000~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/email.png b/src/main/webapp/editor/icon/email.png new file mode 100644 index 0000000000000000000000000000000000000000..7348aed77fe6a64c2210a202f12c6eccae7fcf24 GIT binary patch literal 641 zcmV-{0)G98P)Az`{eoOom?Tf*9)f$7n8&|1&5M4#i^32;+&E? zC3Q;bRFQN#y*%%=_V)Mfa<$xe^kB0TO;vJPkN*k(2v-CI7)OaWj?&eKPos(H4wGh_ zIC;6#q1B5SMap5{(Hc0~XO7OfqZ=x{kupu8-H&9azl`L1pTuu^Znm3EA)kCoG=JuwsyNLEtY83i->Z~j3y~F)`RA1k>zTES07po!kBVS2y#L{jCt|CMY&v{ zxmqM|`OA#P2{R&)OcQd}v0kt6_Dh#`Z$i5_;q|93je3Q^PcfR{TmBHRmr;rWahz~G z2x-&;d_O~HkmKXt5Cd#Bs?-+qj3zOiUdU24KowBIUPg(gPNmxqX)Fiia~V*$y;5L( zrGNmU;81MA$F2k%oeUXQ@}N%bXz=qOij$4IYk4W=jfhDxfCz{PGXe-#ge#VfYTyoj zh4JvDePrW{lf(Oux2xG;VZmlSvDU+Qf@i=O!B`MLglhttCUHDIKkc78WH#=r&^4WT=dCa#E=!NbX9(p@YT(!XFjot}lm;V0_J?q)KXmnd7B z&*xjvoG_csWT^AYHMv~wHFDe|CgF zqISCt$z&2boet2PinX9M+SArhFL4kNk8d!dfl#ehAs&xIy)WhGvTs8 zT910Y-Z9C=MH%W5u6tB<1dPSfZnr-rMQb#3EVCEigTD3+q>DLRm3VngoC16L8JN>A zvLZB`0xFT&v-9)wpH8RKyl~$KyB<=>)#hdIXs^J^3!N~O})c#p>eKA#UP7R&ZV@g=iJB$8-0n=kZOv%yp|tyW76g+h;6mffKu z9Kr2&gWvC$30y80a2&Ta8GW555{XxZLg6iP)EH_)739^v&1O4@#bWr62|hHLOlHi8 zfC_GsB0SoVn(?L6a=H9Hl}deVG#Xjl$|J{0C88seI?BW&I*IZb;SpxV>xuFSAv6)> z&5&*#IV47V%?cr_kTM#`m!`p5A=s$BzXccoJ6ZncqO>5n00000NkvXXu0mjfS0P@l literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/emoticon2.png b/src/main/webapp/editor/icon/emoticon2.png new file mode 100644 index 0000000000000000000000000000000000000000..23d9e4e7c3b657245cdb66fa1130b71aa8f06cea GIT binary patch literal 1667 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1ObbUQj~FEdbi=l3J8mmYU*Ll%J~r_OMkZZnqfXG!Lpb z1-Dy_aO%|uIz}H9tw_-f69T3k5EGtgfgE_UPt60S^&()R{$d-mnt_4or>Bc!NX4xy zA-)<<3MJ|c&ivpx9HXM*?e4<0mFSzE7Mwdz%_`r5T?w`|(vWdHczzc{%X z{@~!?6axv7ODA^ivYIt#j!NRem_WvucLVA751``TeR7@ve?_3`{~oCfsT%iJ+o)e*3{DK+O=y}$I197wl)H? zvJ-DVU9@eR*{XHxmT`P+YUAMBJ@>2Ip@hweg@uAMXU+^*eKkSI&s}R#(?Ny4{{D@7 z_xAqyQ4!(oy>qKp&AWHgdP9~jTXty0b!MMe&-J>V95~SM!tB=V+lNoEELyyH=4PC&#$VgYB2k3z}-7{6x1|5_jInGK3zj!-#tEF-p$?pVbRVBlO`#Jc1{#b zsjjZRu({#q&q^PEe`i@~ZWg8;d-t~bEpJ{mMb$by{9`9)$(jSNzk2OHefso`n>QzR z#jov_l#!EjD=IQ#V`o3Ol|3m*;8Ip$VPWH(Idi7ZJag{cGWPY;H6&D4U)9?EPp+z} z>O|gl?T^>4iACy6lmC2T>!O`IEq{J^@}y;lm{Hp7L>IgH{Z-Y~C(||yMu&VdH8tg$ zxyj6J@x*J_u1%OWt!?#cZNbGWR(Py%ud1^8p|s;}-jip~k`fagbEevC-?xu1j>BT^ zxekLv6DJB*)zq{cei(2pIXRhm`SRtTm^R+u!}967=%QnbHUrDP{P)Gd!NOd^-3ChUj5eCCTDx}X!i5X%|L@^k8W|aRq}cuE&!0t0 pxwyGKS6>ZEO;vrk|5!OA8^eip>ZQIj>*PVzf~TvW%Q~loCID1Jmr?)# literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/file_tree.png b/src/main/webapp/editor/icon/file_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..031ca66315a5ca826d977a9d0c8ce296572e101a GIT binary patch literal 1104 zcmbVL&r1|h93Ruf1Ph`hyYv_-q}=)C&g|~sX70{xZn?Is3tAL3JM+{*XWlgPbVo5z zAxP*X9qiD>E+L`aI)p@aF+qqzun;=*2UMpB0(-OTS_d&`VCMap&*$^~J)7;h+)#hI zo}#FRbeEDN>#5+aJ4C+d-e$cAWnD@)ZqCBTn~;87|`_;gH!i;lkdD zp1eLWtj7$x<05GHWg=iftO4H|u|3(3($mKW6clQUUNl3fu8P~4mObu0!6KWMsb`bo|Z$foJ?j<*!Ff4 zMN-E4n#1x8$68hpR|)Om9Q@V)KGy#ob(w4YPsUi{3>&n@U#(KPBK;R^ z_ZpuZ_C^QVWL{h{7;}>^7&25dX{9soe=7Xi+3BbjsV_i!`fB;uYD?>R`VDA&w%{bc zR~r|u*DX%XU)_4NGfUlFS*h9N`0SDF23S}))3^1cX8T)1^NrfE$)79t9$$G_J9hKq zt-6Jl=hOD<^>d*I+~}OqNPkGI9$sn+&9Akl?sspmO>abxuaDGMU7D(*KL0rS?!^1e Pv%!p~)gEOjaeL-B2wz|_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/folder.png b/src/main/webapp/editor/icon/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..784e8fa48234f4f64b6922a6758f254ee0ca08ec GIT binary patch literal 537 zcmV+!0_OdRP)x(K@^6+>g^d@v4;gkbWsEoXE%32*i1tcpTNXd5CcIl)ECgqz|2rE6EW}s7R?kl za1q`0GCkMruC6-2LANtwVlsgzsp4?{@7$`KBv!G66>Vie3h?3OmEEkjwdLG0PgLVi z`!N((f$A@n17Ldj#`};0I3@iHJ5M{#IZz|UIYRm4(!uV7eYIYIwQf&}_2J~}>pQ^n z6o8--^T(=hkBNQ_k{-_GWE;FMW7!p}f{NG3nHZ{D5<3d8&tLh%a4AqqnjMkr3m&fkMdECD3N5}Unig5wy40;>lo4j~k+e}v)` zR6)J8Mk*u=SpB`p6o)7j?S0T@9?bz#m@l>gc*zk__|*!FMcHwP!gwLJvS~9c0px8E zWg@#5J*h%>dq^uaFBvVQ$3&c*y#>&P@VnG_z zkezqQ&je1b~~$O}L9 zo^;|X_f#3CS5n-cFHBf|3c+u^PpWoka6G0Rsr|AOXUJ zbHD{5nUGu>5YB96PUmjGgM{$-j5TbT8bBGbz2R zHjvpHkWu0*cCs9&;{|Ugi`d3|T+)Vj%kXX`qqQ>4W)|B!_mMlW`2x#YyU0W#8Pyvn z-<;pE4zUG8k-yYxmFW4%eIAbtF|hR_$8YW;YMMc&ZY1$9z5S(QZA)e!-q6)Y`+^>Z zzdYprlOaC7jZYg%{Ey!L(s5u9Pz1(+vk%UU4EzNDb1nO~@as(g0000#NXU(rVJZ0_Z7&gXp3z2_(q;VkBGMmsaW16Y~9 zp7fgr29!F<6RP>ub)&O4fa*V43V`C3yGz;wP~!A;4tPPFm}sl;XZ|Jd$pb)31sm2?QX#5xu zDMxIG3FC+rZ21>aF->7BLCkLhiNJ=4Xh0M6jm8n%ee?z>@vSZsmO#QHQGTDG?-71; z|3Slt3Z$mMI}gV3jscN_SKq?<{>Mjwg2jd#=*TQ%RKcRuE)beKot?IvC(#|lF1=DdvMQ?PApSc z(OerDrLOlX<;5AkFU)$g!?9p2(@mCY5j}K^A z`%F()Gos|V2Oy!%=+bUOREP)Iz!8ao4L~j+rb@K)1;4cy?z}jjz=<|ot9ojHO7-2^ z`+I{3!zhCP=C$6fDzWuJ*>mjD0&07*qoM6N<$f)0Et AfB*mh literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/folder_magnify.png b/src/main/webapp/editor/icon/folder_magnify.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3e7985c183ffe1e5547ae02e56c2f160a9f3c0 GIT binary patch literal 686 zcmV;f0#W^mP)D5KR;Vfzpb!Z%f>egXcc4dbT1v5p6tGa?~4~cr@F?*lxpV^g36B#KYBzmnZT=P ztU#cJlp8~0$(9F7oRNX)Cvl||NCS*gXn$uoxwwWOL_|iRZDU%Zz_0slQ_$jLLxRmY zYQN^Gtv{u{{(_hrr|*biyHKPvp-87(y3%oSyAf`6gSqQdvkem?<%kV2VFIy&t*;YR z^XwItnC$Lnb@LeS)+TUb3F<+F@;111vPk~infZG&LxGEul+|^@8c0|rs+7r$%#!LE zr5D8z0$30Mgs&^xY<*ag!SRckT)wd25;?dXeRPlB*e?_;Hrzy)UL(dsw1?<2V)huH zyi4xws{Xj*>4;d`B@z+iV{2a;#ioMj5;iI##sghy=F5nwf&>hoN|`HnUZxu!1c+FT zjea*e84uB==DyhMT;3-T(Gavh~9-=EPu=N`}Ih&YW^IR@kVBB2dh1b*<~=i`|vgv%&02Yx*P)SD11&;F(U0?j>H Ur1R|wc>n+a07*qoM6N<$g6sr4fB*mh literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/font.png b/src/main/webapp/editor/icon/font.png new file mode 100644 index 0000000000000000000000000000000000000000..b7960db9dae7d1da77ef3acc46d0a6a9da584267 GIT binary patch literal 567 zcmV-70?7S|P)(R5;6H z`2YVu10|S&W(GL4-*9m5zR~L0cWa7s=goeHmKzfsTW-vJJns=rXO>fi=YdvYp=OyIuL^83ysEIf(LtP34vHf@P1syLa4L>s)tjLDRY?|E+S*&m<}gEDA3wCC|S1 zC~n%F`=*)aLx8xUX62**Ryh}!5;VXx>jJY=!}V2J^Y4E*NjsaSAA6F^IPpwJ<+6wW zU8=5LQujKb`Z+F#fckUgU8t^YpU|s(=Orx83-p>b9R3rvXOE zXGG&B-+ooO{Lz1}<{Ou-vd(X^%s98zwd(4P#ubnMhqc}OsqDB<8mj>Yv8NgBOD@j_ z`PDq_3`$^`C!g6^zTp1k={a?|3Z-|`5HYOAUEHcimi|xPlFJZ#%{{hX{-)aXO=~Z^xE1+b* zM@!rH@FJ(e3$Fs}uKo9|x%%HQ^w?fm%Wa0V&kJ-j001RVucl)dd}jav002ovPDHLk FV1mw881w)D literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/fontbgdolor.png b/src/main/webapp/editor/icon/fontbgdolor.png new file mode 100644 index 0000000000000000000000000000000000000000..188a430456fde1b40040e5f184b31c0a42df4bce GIT binary patch literal 1107 zcmaJ=TSyd97@m|&1g%J+B;+ts59Q9ycDEf|m))J++-Svim)r*tXJ?M?pfhKjIkv04 zX!g?WC4!(LqL;3u^x{KF5K>7m77`Lc5|Ncr5Mez;cE()mp>5#Ix$u48|NZ~@&+)d_ zeU%lp6%<8P##*EVnYTKlyoCHw&5bcKZNrf?PNHs{lPyRERg{4srprAr0cCZte;PJX zR4LF>X`GH95EY~|vV&prx=Gj+)fC8^veFAN$iN=W@YA2~-lu`4`ssFeoQs=bnAKW_ zESMZ>O({dYich5j&7dhS5&<1z8RYdo!xr;?dPP?xYv-7y!3qTT`sv@M((yJBMivBa zhI1*LhXWp-;T!jOz1{{Oa6HFy0?P|7-YYf=BFBN%k0#M9wOdR`(bZUF=clt6n%tVNYGX+&BPiqfTJj9&;a(+#Od!8baPGC zuvg1O3dZJTljRxCNvQyg$Nvx2^)c@VW>teq=S`&MXjh8 zU!jD^3a0We zGC!6_Ms^MN&t4w!WEYL=qmQQMJL)IDZ64X!e(PKy7aPC%v*gfddi+Gm!2T1iJ@%)#bqn!$U?e&tsx$aZoY%TtDW@dqHSUNN|-*K+% z>YZq5X0mLCvw?8wyRiqSE=);*Ep^G^<6y_zs+YbuQ?=am zc9ALjx_*Y0cD8&hTbDdNv6$?<6qvf&cd@g6y86nqr&(S&RasKbQI^?$@@Dm=dFPqO LBCXQxP}k94JbiQ@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/fontsize.png b/src/main/webapp/editor/icon/fontsize.png new file mode 100644 index 0000000000000000000000000000000000000000..5b98a6e1332a027f1f30fee620d595393cf85377 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%c=IP=XqH#X?$N2_%qYIvnKN~+W z9~Ca*U!vP_U*I3(>?ZD`Y&-c@{(mg}&-h1dLFs{j0GSW-70)XEtG5VfT;0^m6lQ+J z+U3u8W~~h~6Sg>h-hYUxlQo0ukSx=`-AtkqjK0A?{?B(bVDN36-+a7&HXBFuBYQFJ z7+INr(vG4WNx=!554>o2#>TpUpG9^D-v)~d)+;_bGW>G+5&iVi|1&@rGI+ZBxvXLZjC;k_h{kHThqfC`(hFmxSO zSd?`bB$R({-*5T0gITA{|Fu6pn0eqpx>}JTL$UWimE@yNe}L98c)I$ztaD0e0sx43 BPNV<; literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/ftv2folderclosed.gif b/src/main/webapp/editor/icon/ftv2folderclosed.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7a203ec01dca8170880e31f866c7d77b3118c67 GIT binary patch literal 402 zcmZ?wbhEHblwc5JxN5-g|NF$FlXU+-sQ&it+yB?C|F7i#|I&A6rpf;^>6;s+PtP#^ z@ZrPVyLWfBD{ZKgI6g&xUJl#LbjEcxVh;#({UU2Z5PD%s>iI{K>+|z+k|j1JVTY69e0NhZzMPI#T^7mK1f`Xjt_#UalyJ zjGc9~B%-!5ew~kViKoR9Pu2qm(&E=n;{0_(F^B2Lp5q~bszSxC{7j7bZPI!YMedBO z?C}%gH1uV3b=;*mxbzw3&YP>QFEGtrj)PI3W!36cs`_F}+$1>^^_jNs*siQEveA{7 zLsXyj$k8L(`hxphm{a+LROB@!WCX-S1QmE1UATF4A3S`d%M<0vtn>2KYn?mM?>~I} L^!bacBZD;nkieVB literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/ftv2folderopen.gif b/src/main/webapp/editor/icon/ftv2folderopen.gif new file mode 100644 index 0000000000000000000000000000000000000000..8fbd12ef8984dfd9a95b8ae9ef993ba9daece0ed GIT binary patch literal 389 zcmZ?wbhEHblwc5JxXJ(m|NsAQX=?fZf6o8^OMm~I_WeWW|L;>iJgNHsx#$1qIp_Ao z{D0l@|9Q*x9S)BU2K;|qGrL;yPUD z`9*5`XKMbxp7Ut4^Sw>Z&-VrYy;|^om-EtM-v7s=|6gzU|NHyjzkk1d`}XC_mk%F4 zynFZV?%liBuV24<_3F8E=YZ}3yNf77@h1x-1A`%h4oEe~PY!I04$LU<(2;5v4Q>_U zm^15wo5E!;*;dV|Wv92swMu0y*z`+ITkHtKp*&}`1!uckjc&jHk?%V3#rLDh(y8I1 z@1;DI%AE8IJ4ZvOP6H(Cx&b5>fOF`S9ePV(;T-)k6oTt IIx<)T0N_@x*Z=?k literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/ftv2lastnode.gif b/src/main/webapp/editor/icon/ftv2lastnode.gif new file mode 100644 index 0000000000000000000000000000000000000000..d99096439b19b845907e824b3c6e29c24188f3c3 GIT binary patch literal 65 zcmZ?wbhEHb6krfz=wM)IXlVHV|G(l-7DfgJMg|=QAOOiQFiG_EuVj0@Uuus3rEZ;L SYuWd=KJu9MtaBPGgEatQTook% literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/ftv2node.gif b/src/main/webapp/editor/icon/ftv2node.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2fddceea50c5e1988b5ba94baa5a9ba2c7eea5c GIT binary patch literal 70 zcmZ?wbhEHb6krfz=wM)IXlVHV|G(l-7DfgJMg|=QAOOiQFv<4xuVj0@Uuus3rEZ;L XYuWd^K3vutkZF~%YE8~F5e91j(c%|N literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/fullscreen.png b/src/main/webapp/editor/icon/fullscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9bc42bec16e3077a9680e7af0f90395bfeb60c GIT binary patch literal 594 zcmV-Y0%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/hr.png b/src/main/webapp/editor/icon/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..a91c78a5c436ae57cc2609efb25c115a4b01d8f3 GIT binary patch literal 520 zcmV+j0{8uiP)duS=Ly?fM?8MH^Wx#7jrYe3uiJoxB~poHWZ_I?<4jWG_RV^Fa4>!S z<-_K7zwuyW>&Du8xwFPqte-A&3)t=#)n##f!d0DB7glf)6EYsY(dy7=k^w=~}g0OK393~W$5=0atlITpQLO+;BL(=rAq$z+S zAfPiSKr)@7L`NTxVX}xuDVk!L(P+eEGGTXThuP5)d*d;)>4filyUeE(_P_2jn@{+$ z|C!(OIit}CDY@|K(@!^pEn^)+ETDcHG z0Jez;%!*B6r4%|KZAzGCr~^&!6io-1l?bqDB7#c-x(F=MSfc4AaVdacC4&ET{L^(b zvT6G1ufy^4k9AX-C`D!>iL4b#$i_;XMi!QkXvVCBZLXtmO@9G#_%iGj4i?)00000< KMNUMnLSTX;N$uzW literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/image.png b/src/main/webapp/editor/icon/image.png new file mode 100644 index 0000000000000000000000000000000000000000..4a158fef7e0da8fd19525f574f2c4966443866cf GIT binary patch literal 606 zcmV-k0-^nhP)Q2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10Db0oSgT$J*kO*Aq9I~CW*s{G*(t$KS{OS+#aO%?udUme<*TTEO`Fr@r_QT zk=#}u-n~>Vm!+9S1PE{@3<)G~CPb<$Za;W?3+O}|+q)?*Pn355=}S(XIZmEANjZci zf5 zj<%@MX^bD1^BwlS^+AD|$dm-1wial0hwPI;CDM?Y9SXW#@w-UF0SQ8OgplRTleOB2 zUjkDS|0U9pI|lSN*EvXUa~*UIclJdZ#)Npbwh9>YT?Z;=B8|l&^t~P~om?<5Lre$+ z;%`P>SL7`djY#8Y9$wv9dv|3p)9Ovu3r^Sp@>J&i__b$%mxew<#AEK)K4_tuGzR_Dj zPEIW+13!^2!Lpmfum?NCj6AtX3WL`1|z0WJO$R6%tkR)SoHv)7)V z2J!;SiNK5OjY!w+2h{D`h38lT^}tkNg#0yvV}#EiXX)>`NH!2DT1ckB7?;L|{Tz(8 z;ur_j0K^3mj0hqIV+lr?y8Vsi$6LOTA8J(bfmHy@>b zcO$Rop0fUa(vNo6-E;xeS_D{{pDQU43O%OnNC$xlI9%J##D`I$O)boS8oT7?XD#2H zp@F_)^gFKH=_e!=bR0Mbz~#1kjL!}OW4;TpGi>5Em#V5QmwXEgf`!BCTAaDqG;d>5 z^tO*M_~HzHzE&w0V25WOoga94ESc3NYfJ6YaewCBwAXT|mGRkO%EV>r%_P8({OdYL nyXyvlE}#-v1%_wt#(IAOCI8(qh5LVcnTf5GZ5SK z3kX3yRAdV+P=@A0X4ocLjyN{1GvCa2Zx4f0Mm_b1^KcIL{`sAI&kt=e|j1aOt8IKFRjAQ%V;Axt!&Q}+Z~gVtlY#!Wcv zuDrJsNE(EPTsx2x5C_g)V`_dDwxMvf4bqPkBtr@eDfrsf%!$MMiMv9iS{R9elqSVR z)0tPc5JaRzZGN<2CWLZG!mX&0p=0>~b`OL3$D@B9k<{xM9y~l^u8U0nz0Se4#tee$N z){M2pzFo)T6MSiGBQmVDbov*_F?_8-8Xlx!C&Nsmz|%-Y$y>6D))DQ#gs}Rt(lhX? zJ}!P(GQ9L)ZM*!P;CBTF9ZtvJrWbUN$aV3ZxD%gJ#8B!E^50fauc z(%JeF*;-Bc6HoVctJ% z#J}bQxxs95eQ_-5U|T|`2qxI_#-5W8myg8t{8iDA-)X%=;eu5}di&_8f3NTO4h{EI zwYbm%fNg=-My|PRb|Kn|y%-Jk?%Hsw>EplF`6o(16g6JqaoYd@ N002ovPDHLkV1gC;Y5M>G literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/image_link.png b/src/main/webapp/editor/icon/image_link.png new file mode 100644 index 0000000000000000000000000000000000000000..42dca7440be7b2b2776faab865b7347a8bd14b6e GIT binary patch literal 835 zcmV-J1HAl+P)P(65Slt@yYeSUmI*|#LP@Auh-f!mltQ}@UFj-f zTy`ZC-MO$`2%;Ms5JAvd7tz>ITbyM6k~DRa-s#*s-;awR%^2|P-p#`~=RM-HuYOrF zM!eCEjUOov%l4kG1mES_+pnFz1R#wS3$rhm^1km2ArkzbItH}ra{arzZvy*(c4R!y z^Tp@O59#oLJ#mNO!X_!Vg|dd7-4wsw&C+L2AQ|NH*(}W^J9t9zXs3^6BOu6*ARTe&GtwRexKC3|onqtm zO$IVGgx0v7JjX{D$oK);nE%e=iGw>2&ZCW?8*7fVB+`9_T;Ulu?ypkY`~V{(2DeV} z&F)Edo7+!axbW$fm6esN(prlErcYl&E6w*`|3Lro0p{lB2*Z$#(NTW*Cfe@1shkl9%GZURQtpgZ5UN*>kV+$<-x(zr9LuG@x8AQ?J)q`gn;(qrtI} zlWO7YtgKWj=N;b_Elii^3NP?zJ)*xq3&7=z@6nAF^YimePEIm2GsE=sG;tjB>`P}t zfNVDF$)prte0lTUi?O!lKQ~n}(XRV|c=!Del~PJBE-sQzrvV7V5UmYAeS59-{96mz zYPH%C2Zu2+F>zvSZ0!2f)YQ>Zsbr*-N1DwhYinzGp2yJ85QRbkrPR*)`nt2cyxiyk zjE|2ef*>fT)9D+Rv3n7{sE}ALP-~3!5;ts N002ovPDHLkV1iNgjz|Ci literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/image_property.png b/src/main/webapp/editor/icon/image_property.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa4cc6512ea19fbb5241bc67ba90a9f8243c960 GIT binary patch literal 783 zcmV+q1MvKbP)5LVcnTf5GZ5SK z3kX3yRAdV+P=@A0X4ocLjyN{1GvCa2Zx4f0Mm_b1^KcIL{`sAI&kt=e|j1aOt8IKFRjAQ%V;Axt!&Q}+Z~gVtlY#!Wcv zuDrJsNE(EPTsx2x5C_g)V`_dDwxMvf4bqPkBtr@eDfrsf%!$MMiMv9iS{R9elqSVR z)0tPc5JaRzZGN<2CWLZG!mX&0p=0>~b`OL3$D@B9k<{xM9y~l^u8U0nz0Se4#tee$N z){M2pzFo)T6MSiGBQmVDbov*_F?_8-8Xlx!C&Nsmz|%-Y$y>6D))DQ#gs}Rt(lhX? zJ}!P(GQ9L)ZM*!P;CBTF9ZtvJrWbUN$aV3ZxD%gJ#8B!E^50fauc z(%JeF*;-Bc6HoVctJ% z#J}bQxxs95eQ_-5U|T|`2qxI_#-5W8myg8t{8iDA-)X%=;eu5}di&_8f3NTO4h{EI zwYbm%fNg=-My|PRb|Kn|y%-Jk?%Hsw>EplF`6o(16g6JqaoYd@ N002ovPDHLkV1gC;Y5M>G literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/image_search.png b/src/main/webapp/editor/icon/image_search.png new file mode 100644 index 0000000000000000000000000000000000000000..b8edc1265db4bf69814875d1c10b8761f7009e23 GIT binary patch literal 957 zcmV;u148_XP)(^b;|pVbz=yzjpaJj$ zhrpuriKefui_0DvN;1Ymq&%nwWg*IrK!Xz^eJWuq3u2H~0ra?EC@ge%+`A>6mV z9{TYo{=G6 zt@5m|4G+Q2zKv;Ch@O;`PfWArmB5n3gvMsxV&Iu>97{a!2kL74wd@!f_AP^O%_&ND zm}1c*+F;TcH^{p$P_|akvD5o7vmT>HCkP;z;;&+8tDBI;koi9eX`W!oH4`pYaHlFZwV;$>vvfQTw zM-`m&R_SPIBa^FUasC0GCCh%{h`$~db`z&-lFX#%(f>H6JD6Z(sIW`RKE+xOL+?+uQ%q z){?+F%=6pqEH{6=NzusC-*<`PZYiLCGyKD}Z8^V8ul-K=AV@SE1t4~D2*b1(9UUc= zN-;Dv#Ngl{rd7e$ZUPXC##BFmV>$26ZQi?6Po#@{4gllsPbku3Vq${Y+FAf~T}OJb zGWEz9{(zcvI&CUaN&p7GcqMG4&7ULx##68M4k(F4l7Q+Xm&>uSv4N&(w6?a=)YOC{ zoYLN-J?7@-9xGBx007$C+kK7w_2Z$(k&l}jo2#`dO;J#Ipsbc$pS#^Dy3Q&nSeE5x fGMT)t>sS8=`naU3reLNz00000NkvXXu0mjf)bGN+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/image_upload.png b/src/main/webapp/editor/icon/image_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..777fb5d2e6a8418c573972246582c21d2c4984e4 GIT binary patch literal 755 zcmVe)^Pp+~01yB`w`9=u(Ho~0 z&q0|Zy>{}2gZl=9K}x9u0000cnYNkw{OYaOaSqCHmHYkvAYHn)ZsML%y6Mn?Rm1M4 zCbIimL%-gdGZROY_IT&jL)x4YKv_2wMMsgSixr3VuIl&xwpoodZKLe>9X|MwKbLly z@9mW{08m0kQ6yEY>2=p_>};yqiMnYtv8~_l+pdQ83=1I;07}RxQW8y8wNsO(vNNsJ zxzT2%smQIeNFo9Nln_CYl7W3j+smTUwfx(8yZemmMmgIvlXtBAH}d|cf5_39J9FWB zT>bgZGbKb&6v=F7!JU=6<_61l#uG1|c+xA2v%dWPU+)_++yuBPsf8gS*uy8tE)TNP^?wUn|FBDi_)Ep5))oIO#kS?(pBVA^IE&o0V2 z1UkY@NmW(0wrgcXNO*bi9DvTz4L^KUm{e2mUH(gvXxc2dSs)?^X1ZCKKmdStIIqc} zY8#!Ri;%QZN+O4dtZAm|x={|gX;Yrg9Xs$WDG3lp>Fmkfnp~qGh?EV=o(rGc zc5iE2*(=lK&%R!Iu5ROK1ORQ0xsI-E$A>rGws+=HNnvgLk2jzGKw)59)ygxcj-Lkr zfNySo7mq#2f!UFlj-4>yTcBWLvS9zN#!QbgB`G2R0KijcuYCLXBg5zC`|}3n1DZUQ la+ac%)7bB~m#l70{SP&gLHlD?H{SpN002ovPDHLkV1hOfWCQ>J literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/imagecenter.png b/src/main/webapp/editor/icon/imagecenter.png new file mode 100644 index 0000000000000000000000000000000000000000..d9591c13f67cac8e13632e1c841f7debd1417a5e GIT binary patch literal 704 zcmV;x0zdtUP)W^i!ifsTc(=K1_V3&M#zHR|lg@#Gff=58Uzib9<$t0J;KqX&BUR5k)rz$& zB8cFtCF~4|SkfeZK0aC--xN^wy;E1t?BD8nzWmkmJ4KipCa34l0-FPtBg&rV%afN2 zgWsE9wzM;K6tG3NTXA}ea>>OQv13!S3uzM9$46_o*8xQ6&4HCL+j_Bfpv&{BC`w^1 zF1}kXxg=@s7HD;HdhR^19-zvqDt;>}q`SxG>C8uWsk!U~u^=L-t>B2@I?m3_$iUdt zY>+1Lqw&$&NLPoX3PquAW?h1I?p!{72+!;L*RlW-rlx;#dhQbN8zA&r3m}CfJ#G*x zp4Z31*EX*k*Xge=5oLx?i`zNA>kdcv??%LxH4CUBC|U7?JP#?Xk^{N5`2He2rEOSJ zY`MX=R)kfHh*sAC4)&WC*-o##!|g6raU2I#Scx)PNkXBkgeIjKCA3IE1y$N>fGA2{ zOw{KO8Y@F-YA9^{3y@eEU-x1w?+8sq(AvYkfy%}^xOc5~AK>QHtKmwQ-3^sNYaxgW zh6lzt+!*2ghff42?~R5;6p zlih36P#lKyR|!_HEbWGst|FC=iQ<@LbGEBn!qA~>^`=bSiulnBr?QncO;#pi6;Zs= zE5Qp<+)W8it;X7qG?~p1m)CPnztUmZ#RJJX$@_cqa>9+wNjCzsvg!_rnj_d^tc!C} z)Q@x?#ZBGNBVH`Zj(sOsLg54o9R~-vBzft{d=Q_JF@P(P4aH z5rNrN_=Fq|1VyW#8F!Fu(8+xAESBFc;{Lk?9=^Ycld&v_8TK+`0d=x@@j(PDA8%px zLle(T2Gs0LSit9aqRaK$cs>_Jscym*k~J1kA&H)AE}TlnF?=b7!Sg8)Ww^pQID;9u zC$aGm@=IlOFc!dpyQG98;>{t z;K|p&h|8~-wr?s6WqcIHcEDgr+$@!=(1_vy38012hx0`X`ENTN=o;1bhSJE71W+tD z;G84@$9QRBXj*jSA^cvU--B7JvbhUf_1^bP? vP|eszjZh`mO}g5B1MG#;NxNxl+u!*If$Q>9A-;No%bTEi-Lr>D_AI6iV#?A3~B^FfP%5GR1nd|DqtT_3=slpZLAdaE7%DZ zq7q}81xXPN76HNi^JdngC8_mhYI?w^U( z2gw6K?&>VvIx{ig&f_gAfExg@R2*<~)WC4e95q8rugZ<6&Z+ic)U*Onzk&oo-0>i| zIATHwf=EC_k<7^~keAhcD{H`r6aW_ify}`K%$&?2NJcK8;%KOhO|6b#^*;~+_kTbl z;Odxw3lN0NvI;PYFxpfMsWxLE%Z0^vw@I-i#zYz>Ufg_xS!EE)l=cip0Fkc0GbiElsF znK^ijVHt@UnK|0x!SlPMyan7K-~PV!>fW=oV5*oJs*0JRDPew=cw&P?(*;Eu5;d~( zYlq(NDUO%dUjxW~rt#|X#V_sY_PH1n-EQ~u$EWMFd)E6M=kt$dKcrzwpH{xkji3Jo X7}OeR*sz>k00000NkvXXu0mjfdXfo6 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/indent.png b/src/main/webapp/editor/icon/indent.png new file mode 100644 index 0000000000000000000000000000000000000000..9364532344e4b182fc286c4ad78c738533335d73 GIT binary patch literal 353 zcmV-n0iOPeP)A?80v9Z^YZA8as&YaOiG2qAVzYLj+o?N|k`)kPFX7%epMT)pIgD?z$ zz0k7x#eWfQHil2%e>0rE^YzTbTVLW%P1UySD{rve8ZZphV4}^gtsg#oV8j^<1D2Tp2_^}JGDwbz00000NkvXXu0mjfU=gFa literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/insert_html.png b/src/main/webapp/editor/icon/insert_html.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3bb5efb5e18f0f0703b570c66e462d1bfc674a GIT binary patch literal 2563 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/insertlastparagraph.png b/src/main/webapp/editor/icon/insertlastparagraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4880c43a14ecc3cb1e29d8cddc4f387a57743615 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%s_jGX#(Kx>}(2>uk*l_t@;dN0EviS{mT zvGu&K!k84#EqwClM$Vqeq31P!wKX|r@41%rr^5Mj!bSCsndhIXFx>q4hRt2*@LPwH h>8~X2DekW?X1^%zd1ncGXCcrj44$rjF6*2UngBWCTFC$a literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/insertorderedlist.png b/src/main/webapp/editor/icon/insertorderedlist.png new file mode 100644 index 0000000000000000000000000000000000000000..33b0b8df394dd66b20f74b551d5d52eb53cf335d GIT binary patch literal 357 zcmV-r0h<1aP)VicFNp}SURRVGD{CSNFe~ni^^#wyl5uzj4je z|23%2?k#{x(*%mqe9M%mih+W%ElRQ}7!$^91> z7ymCLB=nz$hvz>#JNtiTW@gkt1Zf0eyP_){bPq%T_kY#2Z7&xs00000NkvXXu0mjf DNYA0= literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/insertunorderedlist.png b/src/main/webapp/editor/icon/insertunorderedlist.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8672bde48f806d3d4d37db192588a9aa3eac10 GIT binary patch literal 344 zcmV-e0jK_nP)PbXFR5;6H z`2YVu10|S&DhA}te_Swi*Xsu$nk)lAnzx?+_#Z@r_~qs0*+Bfiq@?73K|#U)?Ck9S zsi~>|6A}{sM@B~e4-O9gPhA%bd?2RGd{of6>E(lvp1b6Ep>6&12TPB<{a?EDDL4@0 z;^ML+A|n0=1_u83^78uc?CkvC#>VEqiHXU7U0vP(YHDhzff&$ntDt1@;|H#l*M@2! z+U8#>h@W=vfpy*`^1J}j+`sMRe-I7g8yOj8Yin!&S5Z;C#5QQ<|d}62BjvZR2H60wE-$B^mK6y(Kw&{<9vg>Q9!g~ne(gm zmj4swoA@7?D86%i^8WzK9JM17E&sp&Z#dpHfz$E-U9ks&4?Z9Gyg!%0k2Q{M-Tz#> z2OnD>vrPZ*#{EHKLq)>Jcx{H|Ovdb&|4aQZWSipI{El%e^Cxx{^9vSw28s;a3IDB= TS1%U=TF&6<>gTe~DWM4fm>N^1 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/justifycenter.png b/src/main/webapp/editor/icon/justifycenter.png new file mode 100644 index 0000000000000000000000000000000000000000..57beb3813973e69f535a822c2f0424fa9f560303 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%s@pN$v(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P{UFnE&ke;(6i-d4-w%bHR;j1|AyZ#v6S(amDc zlKy{I(;D%Nuye{ncOLwezxwWez>k>{<_3S*oiFG7{Xgq}=)co{r~lFaH2=T-_xf)+ f9X!fMH*zv8ak(u6{1-oD!MC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P`}`P2Tg^~Il~8@dITHCPA-{a3!-)3Cjx%=yXx z_>8LclV7mqn+PY^{qor&o%8>H%d3``{~Y#6bGV5yoI2touNPXs5@;QRr>mdKI;Vst E04%Lf&j0`b literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/justifyright.png b/src/main/webapp/editor/icon/justifyright.png new file mode 100644 index 0000000000000000000000000000000000000000..a1502571c99fb92b1579c3658bcc50c5976b8e7d GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P|9aJcmUe!yIVina{lp#RFZdm6TTlr;aYZ;9)u zJl|<{@VEV{yZaY@Fz(E|@aw9en#AM1%O{<>miNN=p706cqf= z&d&aynwt7QAtB*^WMt(3;NakFtX`O~`}Kc{!k}-*E6NOL+wu}_Kze%m|HQ<^|IyLW z|3gAT{`>m+{&#b8`;XUv+BMH8b3yXlhtDW7AZqG8xB>qD{{KBZJpMa6I{vq^vifgi zWb|KKTl>F?ipqaEIk}Zs4M>{#fHE&cPrXOJ0iF#vu4T=C_}`=9##IpC#Kh#kuCDHX zH8r*W^78WkB_$>Q3kwV5js^Ab)0(c;*G_|Ivb{j6W()(!!2nMa(hM;Jfqeh~002ov JPDHLkV1nKcst5o8 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/loading.gif b/src/main/webapp/editor/icon/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f2bc83c792d115bec6c82ed37fc189b34a1d917 GIT binary patch literal 15416 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 Qbo1!H+%-HzHzhv*4XGrP{Qv*} literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/new.png b/src/main/webapp/editor/icon/new.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9bf0370708a165d3e49047c09e110e02074a53 GIT binary patch literal 378 zcmV-=0fqjFP)Q51$RwCw?WgWe;0fi^vY%UagXRhyB(O=1wVPFJlYqlK$kNFcaSBrLFKHcpU( zVj5rP+%se7wuRup#~J3_|C@8?jsx6(aN8gV+_?~^wID=7QAmWo&=P9GzK~Bj7P?xU z4^LybJ-~;P$nL)ri2Lx-f?f?uyKtX3G(76UWeycgm{0H$eX9nWr+ASHH8>r~vom;o zFz$}vYpDI9TZYLgxm?Z}9nS!RQHI8Y*b~3AE}I>k|Ynq_|_kL0z^} zg`YWG?`i*VRiHt=)+fle*{;CjiLD9r5bPAPFRr!h8&+rODTKm>mjte|vSwTU#7zr+ Y0SIdSJYsEaB>(^b07*qoM6N<$g6XKB5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/normalscreen.png b/src/main/webapp/editor/icon/normalscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..745c65134db478a64016d63a7104e585452f2b9f GIT binary patch literal 600 zcmV-e0;m0nP)PbXFR5;7s zk=srhQ51%Gi+LO^77wV16dAzbG@wAMB7&i`(b(8xDqyU&#ij;pOFf{D;3PUo6_qH7 z@zCD%DY)SY{?6Vev}G>5=v^;XviDy5`&RNV6#!MZ;uAv`-s;%-AVco=6~AW@oV#X; zoCz$&Z(d;jHilq%pcXjuFe4{!G(v;>9DU>S79m;;B2ox|%Nj+MJXx5%p2GUiG!j?S z2%Y&cbj&LR9?=RJ#?#^`7Ar|SI}E|PVW`sPXn8=Gxtzq(^&D1yr10dMQz3B4@Y_lP zuSye$7RF#%H`Lg#dZzwixa6krr|(Pf7aR(KLtwFRkwCIM1ACSQfoTSJFpr@l7akX# z@D=Rv9@rED+g2a?Hy@G7U^9C3eb%8a_?P-$1a5i9WKAS#+qN85)~E=vH{A*SvKG1z z?dVFiLHkbgJ49E`%y@DfW=~%tej1}mHwt<_YB9MVMN|yeVJaZ7Jh>K;f_N^45j&cq zYibm9%abEw2)<1>?5kF^y-^EP;Mg%$3H-V=jgh?XuO0tco$p(rOKHJp92n09(Vu4V zFxf1qxGkd?5d9d=dtu7-P^)33OCji3)S!K#g=w8v*PN>ytji{-6HO9rn%8sm$HQ(N)Ek< zrc#vXMLdW}TWpphCZsGREkUZr{Mg;M&b;luZ0IGA9rnH1`DVU1->eh_0hG(-dw<@) z-1S-xc+D!@wd^?Z=a`M%%phe@J_EnT0QpH7V3 jcG~XA#&PRl)Zh6(yXt(^KFGF}00000NkvXXu0mjfDwr>g literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/outdent.png b/src/main/webapp/editor/icon/outdent.png new file mode 100644 index 0000000000000000000000000000000000000000..1651b074ebe5f830c23c909d04ed3282cb8892aa GIT binary patch literal 351 zcmV-l0igbgP)$KO_&&&86Lj*&d?hr!$_BG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/picture_add.png b/src/main/webapp/editor/icon/picture_add.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d3f856447b2169265867e88052cf789234a179 GIT binary patch literal 745 zcmVwHdg4=I}KDOKH)5`dDSD>$*Y+lYhxmAcGuF-%MWsHUJr4IgaCsM{ig0 zSSBT=s4DwP*iI5?#me_ElhaWObR8DO+&EW-R6_iOTG;>$!^9AfH5RBU`HBdsS8XyAx|wUq)E7h=Ss)mVnuwi!$R3b1!m9&Tc8e2Ah* z93dsPSIWMcb|P*JsnqXhvE^WDxdW*bQYjAj-)O1aj{;`q7kRbTjhQIKR1t1J@W^=H z&KKSDw_e_z=&`ic2;k(#VF6&)C&;9iap&Jt(%M18^cYK-DUQ?~rD9htLzB%~biuWVi^wq=sbuS+r^MZt^XM4mKhUNn@-HDRMN|w*p+XTw5ejxoBfqGYGMX z(mxA;rQ{;Eh;XXz5&+jv+-LAZKk(eOLY8>^WN4-(D|NlrfBplBR3bVVA7LUsOjp|g zy{|9gnht;`^xt0nqUO%>o{FmI&DMtF)b45G)516-?}wS2P4@j4U=z{{Tmg0fDWHG! bUcBoE0(26M^-PUO00000NkvXXu0mjfKPpmF literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/preview_result.png b/src/main/webapp/editor/icon/preview_result.png new file mode 100644 index 0000000000000000000000000000000000000000..9eae42e643cbf4728ddaf8ed4f35d01d0c6f7658 GIT binary patch literal 2052 zcmbVNYg7|w8Xm3{~Rs=%;U839xVK{Qp zZYUlSN%my6L!kg*BatQu5CJy^6f5O;k;MnEldDiP0EBMRsYGHKgkW|;yQPXS?4xr( zU@=lj72YlV>Q@pe_u%zzd?b z0 zAd!f9ePPjPuw)k)&t$!hh3>+zX$YbM2?VWHi`P={N_aPc6cQ3*;UJR(P>%rh9t9%O z1t`>hOAJg%Erz8kM5jP~x&16dr=Y``tB6g?DC22&~4$RP#7 zVTNJRFL;Sm0!FZC31r&urohD3-GPEaZ{mL?!J zO^GPgX-X9)f=|V4l`14kt=e)pi?uQ#SegY%Sg=x#S?De(eM|KJUG*YX^8a*nVGO=sNWK#nQ>OH23+G`N?;`@GIzV zn;6(Ib+u93wqqbWJG&lJCCdqS4+oZ83*4G>F$Oy;+%h2@HG!43XE3N~l%4G;p4aQk z7~Z#ympC1qZAI_%p8xjPt#G=t#A>8=>j6fUd*(40U}bN~%+E8FX0J~t%qiEZ+Y3Fd zOquK09l1sKu%oN5Kcxg{&A0RR#^%IV&c)o?-t_r;Ltn+lx;9P2#o42k>VZeNWi08_ zoN}A5qQar+3dgbhY{lRGnm!Mg*%BQ>SN(`NR#SG(wtZR|15co$Wx!YQ)^A8MtCq4SSrlHL>9b^}u zxf_?}MPAbgtl#%_<0qGKX7NT%Z@$~XI@{TQR6IJ-(r_@h3zj#eE}M3UIh=Pp`~HQm zuKlZ0mT5lK_|s7jp^WYu=a8_`X3d1iaH}-pyy<2mxD!>&Z1vP3F*{v&eqFv!mUUyy<5_TT<#LHM|Ga zq0;Uap!nd!E941>L_Umj=}+;_q3`F9s{VG>#n&EUOh27A9cWFu@x{r*tK@uIxs%`p zd&-;>B|D$U`EtFc`p}AuE#-H%XC1q&3+Zsp8KX7(zbBn4I?`w^`^Nuf*?0il`ZM=K zK&ACbf4FYWX^y(9_Tq;HL|@M#Xs5Tq!|pXD@UnCpk^o%j(tr`YM-&MiBrK+ zDkKJ^&in=ZkWg3)5(@*cfy9DT{(x4%UI~eFnxqT_559M&@B7~O-o1NVUcE7$m`N}U zGp(;^6}rZ8;^GATPn2s%bh%23HL`{`NyiKjQ?PLz0o^qlsDezpd+#I4Gt4A#sx?wG zZps#RIWxv^k?T`7!{iqu-?UnYfI4b8p2Gfm^Nt0Mt+4AE0~)@Hn$F5jfYx?atJY4- zl5BQy0puf@3b=@vAab|7P>vL~uPf6yKIU1_hme-So|>u|WuW2!feZ(e78D^61x`rM zXS3PsAO!`;!xS&1l0sHar(_7h;A3gFz}}QAT4|7r?i993h%fVer_yKo;aL^{&Fg`MUUf^I{ z(hz7E|A)Hn2py6NI`jKa;jr5E5nn+e-VQ8!ahtPoDqmIuWD*=yG2R+>vE0N2hfVAQ zbu9zd9nZ#{u#YwjS@%L>dKS_(g{6GXacmjpL{UmhB?+ooK`270D3o$)4i@Icf+QA~ zhg=O?+b;6RkZX^)1vr))4}$B{%o+-uHnK|rc0s>j*%|Le8>=_q+GD*)#j#wTn&IPX z{p*^CM|5`La5S`ZGa7s3(OD1ZP`^C*et|v+UDpcL=v)15`^U_r*t`4nMXv`-8()^d z+}x+VTi5pP|31mI50@S+N#yXuN$>d4vHJPR^Gmn0PZyqf8z+|!ULQT&XUMwuEh6|q>inc)QJ;fK}wYdHEcNcrLkK3%=t>(E)*n& z{s|;D2E-p=U}j=xM9iQLY)Ivt#D$?M5+3f}J3r6!e%$*WZ*JUMUc9xaD9Wtg$7rP>%i3M+CU%yM-o51-MX z%~=Gd)iuL&yp!6$vYv5+|EU<1!N9yV{%V!tO7>rFo;AKaoQ)2R<-Bk?806K}6FF4K zb?kojW%%p#w7!6kj$d?+-Xx!2Tc<8QssDU;`%$fPgM96bfZYx*9VrXS`n9F|CvP8r P%O}!pZ8+~6PhS28{6{-W literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/smiech.gif b/src/main/webapp/editor/icon/smiech.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca99b1b22147d8ba2f4e5f8362171213ad972752 GIT binary patch literal 1086 zcmZ?wbhEHb6k!ly_}({T0jEuCjw6L%+b8~YyH@D>EH%*?-k|E^!Z ze){z3k&%(RcI~=+`Eq4trMzj@Qa!QsxGJO6+G*3;Abf8&O{y!@IqYo1=Y^5y*bOP4O)zkh$qlqtEn zxrvF1US3{*UcCwm3c7y%`p3(cuU)&gefe@`W@c4Y)s&Q!lP6EUc=6)@{rh{jZe6-` z>G}Qp3kwVXU%2r9`SX~VnAX--US8gL^X3Hy2Tz?kwYj-jQ&aQ*`SZ`8Klk?b{{Q{^ z&!0bgdwc&sc`|wOWMgCFxpU`oaB%#8@SwA^voIq=K|!ISqQceHwY0RfudmP7*Z0T0 zd-LbdKYjZ2&Ye5gu3al4BJ%zF_glAag@%T1+qNw!DQWxm?f>uH`~UXssZ*z>O`BF; zUe3zOdSdThH8r*W*RQW!xiU63_Q{hcpFe+YY;06lSO53#-^Gg;%L)n}K79E9|9^&2 zK${Ry{K>+|z|hN}12P_zCm1;XGe~pFcx+g3u*sTFON67veWn|mPKXA>;o}X=?8l!Z z9MN!-aFp4dQK_)N;h=_@g;CZ=hoz^PSy+lB1Q}Yn`?7=#Zz;PzeLW$JkhP+ zBPDV05QpPLmVAlAlb_Qsw6UbkOL<|iM1X-+i}3=ZGb>9kH;aM5$)@C^VulH^>n1K< z=-VdZA*922QN>|`m9Pzmfj~n;BdhoV7NG@)&&nE^yVN8+NobU{&{1g-Nboq%&&PCr z#e|E=E#6b*mk$i06qtUIoy*;+V2#5CCQdgMK1GMetxoN1#TI%Rjsi`> zeGHFe4jgEo;Kd%y!?&R*DpiPsL&QybhZ198gj&uoog9+|ZSoG%X&D}y_wD=pyO)WH G!5RQM@?S#$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/source.png b/src/main/webapp/editor/icon/source.png new file mode 100644 index 0000000000000000000000000000000000000000..55d1072eafda48abb0a5fcecb98b114d866077b9 GIT binary patch literal 578 zcmV-I0=@l-P)dis)>+`f+#3Rv=dSV4I&~|Vk?LiBG~#L1X~NSQGbAyogj#ie_$n8 z*oYwUieR#5zw>=_v)By?+NE%sVPM|5yzfjE5$wfk_Go)9(A<0e{hvFiJ0eb2MFf%t zDJxl&RDw>Nl#~WweRba-&_F#fn|ifCG!S=00#QfIDe64k{5mZFusu=CnSq>Qvt$j5 zI$4b(K~|@Tvozn3#yaJ|Be;BKfh@+AwFR!7UF7D*61OfavvGQ!VN-Ga+zO*%#qEoS z8E0dX4NpRyRS|XCrXq{e4r(61{zg^7gBPDUwmjg}k(Q%NLkD6fm6*tZ=)6^ARRw9CNHr!!-b)EovamKwdDMpr>=!|-tf?S+boQE&JP}G_9P5@nR zSOjlBPI$jHA&U_KsTjQko(uJ_ROpKn!K^ckXTHmZd+_Mh7C&~BUYvvb=Xi2w6%i+L zP+hwJF0QUE^66)$h?CXHvdjEbu3a_69GS^`e5Gac*$0~K9VHcGVKhe>RE(rT+Ca5J zv_?D-3(OpKFrQAl`$E;pyKkaTN=V?@iK2u!kqwFy=F?aM-2b}R>c4;EZ`t2+*gqpJ QK>z>%07*qoM6N<$f@8}2CIA2c literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/sourcebox.png b/src/main/webapp/editor/icon/sourcebox.png new file mode 100644 index 0000000000000000000000000000000000000000..63fe6ceff5bfcedb9670279d4bb8d25807f6ecee GIT binary patch literal 859 zcmV-h1El5>jf6w4x#gTU%_MMNlkNp$oSbvBp&uHw9M;u0-4@=t5BI zP6Hx#-C_{5RMJ z0_P+Xkumexn8%)S+Y)#l(gR;YJP<6#1-=jjK0LONWPdJQIR8uK1HpvVIxBIQ2ztt+ zqoEx_X9S%QGMe=~(k#sebCL-an)%CR%a7YtUOQUgv+G>~?N~XSWhx=? z@$fx}0MB;$`JWcQ-Re{XV~5|{DvU(#*+NF*g)j^qk#b~G9_O!i*y&mZVZ=a3;Go(K z`DkskYn56Nhu+k@1Ke*uY|x zI&k6j$JfNe_a{GH%=n2rZOz$Z8R9V?Pe36hIk}jo+A-`;dt9vyvBu#Xm@veu&@v`| zzt%mwc_$nd0-sMVx2d)b0!MqGxmfCumx7yB#nIUWvA{!HOMfslMyW1iV&nY>zxwyj z8^JfLN|kT z4m^Q1mhO(_r4w@`V?H=YNkOf(i&bHT3Auc3bryK1_{hDSetLoLN{VLB^78ULiNFy^ zkUqqG$fjVkJj5tfWkOn|P5`HVEp5@-mGnc0wvJGHC=+39MC2TWT#i?t*~fNch*he_ zgtS^8dH$(KlW)EF1b4Fzv~?&0IQaNdg;W5&{t&Bmg9&N1-rBBr_;Rg8ekw^mn;@T# zlS{|Rq+-Nlg18i%UY;i|q1NnSwf>I@85#4U4002ovPDHLkV1mEDi4_0< literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/special_chars.png b/src/main/webapp/editor/icon/special_chars.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebebde546c1d11df80c3446d0fb123a8d2db6c1 GIT binary patch literal 760 zcmV*uQQn7Ao3L@HcVN_JG5Oz^iELqtfic#8+p{{13 zB!rfdf2k)SDwJS|D58iKOKXwBFIFGcC-AUOfLS9bv(H0S%=6T$O9SC=2fMD%gnJC9? z!Kh(gvt=Cx?1R~s3W9x8mCUENrT{!2(+x==*z->Z(e<;6aicYvPErVhHT_;HRWCrO zX>Ant#Yi-31=*-(@?ZTrNtR{}?1a^q3-ss0eBi>@Qc)edAUbFFjhvR`kHwNKL}lr> zmx4@#VC|1-HQcog=-UoF%!Jv#1q7>sa}xhtBKb#7NeGlV;rH6OFmr?PNPiwMRD=jG zfZ3f5vy;Gqe4sZI=uW3=7L4|E%(QHx)3_-#2chPTcz1*X$TTNe2v#yoR){KnCQhcg z(YBd3W>A0&#{D#mmPqQSlM)|3A^ATXx8dz!8(tOJd5pyIa?we$G^;NU;SSgD5WO`G z1giu)7o5cCBA8D%u7}Z)i7#g)f3PVT=*fasvkLEz*?bEIkm>TthSk)+f{EIdAk!W) z?VGx_0qAlea5(`l58AzP0|-{W*Cx;y=hMVxgG_4#JISQPBo@rv^)uedmP%+LWdH!1u~sTvRX(MC)0C( q-3yOhdA{Gl2X{NXPYNCLME(Md?VydvM~!0u0000C#5QQ<|d}62BjvZR2H60wE-%c@9E+gqH#X?$N2_%qkv$?&V++! z-fX$@sb%KG-5a$|R8J4(Tcmu7`G0cYgxS-++3#dN^zA^J(=P8r|6lx9G_LLaZ+v5S z!d9iC@)!RP{FnQmdw#}3Ee(C$|NPA#|L6YmR@fBO9w|C7oMMQ$vc`Tu(RETvC<`(>OPJ!ieM-fH~m>7>jVjYFP!CqB_qTX zOJ&0en^&%FY~D`yo5wuXrqeuThwbe*!4lN!gNF~E?|Yv2;o&s_0FxcK)F4Mv>u0z* zJhiT>SNoIRsri=6U06{-CYN%OHJ$srT8APibiLY-K*7FMO` zu!-u4!CmVjT89blRPxkIDKC*hn?y-keBB&eC_)C&se#e8D!|7|Y1Eu$<>Pfv>N49K>6fy0A2YR8!Poer$)vwrolN$#@;q4<}Pej2{e%3 zI=@b?o@g_YM+14D#L_V#yK@oZ%9M~)Hw)Nk$>Z&}>!Pcq%1JmymbL7=2fKmBjgNb+ z0y1kBXpaiveUuCEe9fUL91qlp8>1G%-IfQ7F?q0R5`%pM_H zlBZRaI3ut~u@Y3I*su)iBl3JP27{y#cAw>392ogM27x8WYUncrLQ548Qmg=v)c#(M zKW28lmJEQ3zM`w6LouCZ2JeDx41XWS7nLH=8uZMsJl-Y~+6d*|L+TPovcw00000NkvXXu0mjf$UutB literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/subscript.png b/src/main/webapp/editor/icon/subscript.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2b01017dbd77dcb1c5c4ca3d6c248d1ec8f1d4 GIT binary patch literal 422 zcmV;X0a^ZuP)J-3AN;KsG}ItN_H<)YO~+biscK35gGaf`SIg^B!*iYEReM4Ple+T`TtK`;KS0!apVx86LEKKJ4Opo2 QTmS$707*qoM6N<$f=73^s{jB1 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/superscript.png b/src/main/webapp/editor/icon/superscript.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb2a7c7483531a9f518018de41607eff409019d GIT binary patch literal 421 zcmV;W0b2fvP)CG+sNmIhtD#~2^Z#UfA#v8j z3n}v+J-{%ayuAECadGj1+}zv)X=!N(;^X5L!o$N4`1$!AaCLP(08(RLajhY2(!C4j zIhPDD3;=2l0BZh_l9KWtsCfcN45+yQsCj{njg5kJ(UkzF>T3&3GA;-hCSP#Si$AM? z;RT@04nWQSBO@dK12q@GYzATP)|&^?=RW+OJnO;#u!(m+;0yzxvnK=w2L5+*bNdgp zS%Bnd1llYB((K~m^54kFXadOwfSe7qxxm`m`oDpJ!G8q>1qY%G0ND%;umTWYQ&V#S z&;|b`BqTlv3JMw!GyrPz0g$tSnhk(99{_4T0MvYdi;L?33k!?E;LJ<_HjJTT>q?GuNnCdgP^*Bj5V_b?dAq2Ppn9^MBB^YUM zad0N-T{Ujg*A6d~mYV4na=hT4Nz+_}SGTgW|Iir!%$ z;@OGkWI6+j0H}~K4RYR%!7y|zM`O@*K>rL{*&}x3lR**HrMXC1->#slU>X|w!U1xQ zqcc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC$koEl!o||q$;sH#(9qSu(a6Hs z&A`RL$kD*S+|lu)km?0|VnMPZ!6Kid##9ZM~Tt1?KKv zv!ugp(hRpZIWDd}E-fZW>PjryN4+*~x#qQn4h=`g*#d$SIi@9T5S-%j zQ9I+%+v%Id^|z~6DM&^ z5Az(7=FebY|9N~DdtaIC`+4FYYdv&U2rJBX;q=u=)DinQb%IRKElUxVS)GfHi5c)( z?5q0p{lTU(r*)G463M3g0f!3wCBpb?ZC>;r_jEu+_qcNuN%&$)8W$UN+x z{B{3=_FHS5I5f9JPgt(~a<*M}_k>;XS1o=yy*+=pZtAC~b?>Zi1YDKwY~$R=BEfKb WJJ(}-kvbJn+2`r%=d#Wzp$P!z@a8!H literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/table_col_delete.png b/src/main/webapp/editor/icon/table_col_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf8254dd1249257d96af05bc558697657040d41 GIT binary patch literal 1569 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC)Xm7n(bUDj$ASOKF13B=llbQ$2FGawNQD!Dy$iTo9?CIhdQgN#$*gGTGQN;HB z`)Sm>2O-g5$5`0QHi3)qSXx#*fq7*l|0?X!Nwfsy>zvn zi_Tgv?k4V|i@05Lg-knt?s>9z=ErkKRPVGuv_y)U_@h4`Kg=pylXP~X_l4*^S@ZT+1wY*C?rp90 zTy5jZ2Pgd>Pr12JhcCxz_D!zysl^xC+7}$1_vqT4RF`jk2e-|<=lYidiY zw@pxBO$}+^a^3r^aBC5#f1K{(Y-eND5@CVa3xsS$Dk`?i8|P29*s}SXj!LLiQS{!{ zgSLz{KPI)E&)zlb#Oa*2bt@AxMVIJC71;_c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC)Y8<%)D@`I(#g`$(AB`vz{JGK z%-O`k)ZE$C!qoz%*E6rUBrz{J6=rWH&|ausBfNU8oQqNuOY)0C^7C_GDIg#tza+mn zBfmhwIoMPoJTosPzq}X}IS{|Pq!wkCrKY$Q<>xAZL)R)3i|vNSgnSLrn?g>A=>r|3 z4@w$HNd+bZOn)FIJmCX5@T`-X2h1-;z>FbqjbQ}?1CyPni(^Q|t)5`->|jTce|bgu zLDHfkixX5mT#mA9g*dh3xhxD(ZORjg*>Q4FUd)OG9IWDhnROo>3gU6)ZgN_@z{T+u zb9ZO}%j?BE1X*V%nRdQBJ9m1z+WOlONBGa#7C$@p^O<#e+M0>Si)+0Ub*IFrFKwB? za6RtDMke+9CX5F~&z?T{Pgq*`!ik>$C#FA}x$5@8gSDsR_0!VV`|j*2yP76^Tg%tv zn`QIDHwKS3ezh>W)BMiGe8!W6riq0?u5SPS%&Rj{JGA29H6v5Db@6S&We*J5-W5Jk zD?ah<*@dqAdJ~Hp)f)9?73_Mx?_;>!(hIxIvyUzIPyeUn@ivb0y#Il07OCUA!;%e- z_pX0@?MS(d@4Cz*n_0^jGP$t?nJasA&p-d*Ok?#9TSI1T29~VuV{sFNq8{HkFs-jl zYx7c;yR6n351$=3Q96D5Z2!V5y=_g0JC`kbna^6FC$1GBa(hec(X|S9OSxuF4=?;4 zdhg6t&m8UxnbFs`U2LmkO1k{~WdP^Y%6`4hhUZ2yuX<*&^2a@&cxMmO>1j9A{(X2V zu9SHDx=Um#H=E9mr(CDj-tG3K7NXg7n+%vsqgIUQ{ZHND#{pI?=m5aSz=q`Ele zzhCkG6$>k6Jl&)@qZ|zyrpX0x-cI)RP1+b_;Bq;h`0&g^#7Qfk#G)FK6|?QxvX4ZaY=lIaBBDX}hwKW}?GNLUU2^w+J< zQKYlldx^@BNG3aJt4*+(b8!djmXjfj-0${?Y>6Zz%kLo_m6QOKQsp$G0S7y}K!A2? zz+$BtHhc6`1)WpFQI?uKtD~mUfjPmfOd!LLivn&+AOXMI#qhXa1CHt9;yknsfxs9< zsMLVtPT9-_fS%PDnyQ;X==54A)tT}7=jfLqL3kK997^j3`{(rXpM80 z;YEaT!j`zwfE9w^!6C@!^T~avoaM?P1jDe9hC(3|5i-7-5lFv`;giA&1jRcz+9S{` z1B4XGQnpIafTE}4A-Fwe^GjidpGcILGRRMQAVdyBZg(iIF*Gj}QUAE{N;Ge+_E1m} z#j{nML##(xQkX2}?)8R3K+zjKpQFX1kS>CCRJkceFcBJ1JdrzTCyu~6M5k1x>6ALm z03(Q&z?7I#rA2iHg-VsC3TwQIt3=fX3^S(bFdc><1{l+;Fal8+^(un_MG+#*H8H$E zG7c(imlo|#aM9OtaXm+o0?S!h))nr6f(lk(`3lwp=q*a1m}Z=;j}H}RJXV6@=+%_d z$gyr9o&P6ekmw8)YK?!jN_b1`ztHq$DeMl@@Khrn;J5m2~9st=gjfh9G$CK#c6vkb`WqcErl$(tF?Un0;@B{h*=Y9Aol;!c}-x;~r z$}Vp@zWw%YSuQb@@4(R;CF#42DZ9>|`&xSI!yAA6xZ_=6HGy2$L|-6csN<%To81Ry z+L+rt*|AZPcag}4-k-a^oP281g()pk>xuTdgUwk{c~5f_Pd_<1<2~PPJJBkqyO5?fVzsW9o~>(}lvc3hJbUh{9^SKQwyCkMYc zN~g?y{xIjam_FN;`8VfO{dB1yYf37~53E{iU)XqtO32*Mv$Qv2O4*h~{gW4$p_$1| z+m)6A^sSUkp+@&fMQ5LGq_+Oz4}m9#iotZ>gTU0k>Z@iZOkJ||cec}e)Evm2(Ru`p sZTscB!06k7!Tx8mw6w@&8Kbgp3GLb&ukhxzhyK$hLmqKN_tB=m0riSIL;wH) literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/table_col_merge.png b/src/main/webapp/editor/icon/table_col_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa1caf8fca0e8b4496116dd203069573b441b04 GIT binary patch literal 1403 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC%*4{n(#6!=$i2b) z-#q&MjVh^zN4_K@x&qYD=aF2tA16&eblsbWlhj=HgD9S+c7< z8;?x$>g8MFb^0Uw%(#6ypK@nk==pr>DwFFok=EvkX-%xN&i&ba@>`^VT9*^UDT(IN z!myjl#KG3jPrTq zeup)^zh{4+-Td{z%Hp$^w!Pl*L8i@R)1^IzYo9t^+jh?3V%?r<(P>{zXUQsFy3>E$ z>~5wvhb!Y@hL&Y3TADO2+?G0i?Id&6tmch3Z1%ZF=Sq4dZ@W4FzRlttC-^36*k4#A zc-kWSqp9pg9fs=kmvfwr;y47A?me3$%~!H3w)g1`%UXwY=LrW-J+%FG`_az5=MKTsd(L2%Nfb28ake(Nc)gcnjiHl06Vi5zr`8 z(3F?(m8sa))$`m0WS?l=+qJX%?3~|q&b{3f0P254(UJXrb9jGiI#k0{pbFjlDki*T zsNK65bM9bxejAF{MGVvdfg*Ucf>99P^0^-hR9&S2%@qIt{DU3aL~IrBX@O zh{xkltJMZF!Qku$_KzEIr<%^br7DT7!cwWkIkl(KYIP_Ui*UJIkjv$u`d_XSfR}Cb z{UM9R0=L_ZLZJY?UJqxoLZsE{kj-XUkQPFr5LDmuPuODtfppV3xYCS`Mgz%Y5)8w@ z@Angkj%{{2orpvt5Q#*37I1~SZ(2p|=nR#EQ|#1EP^{GPb@v#bw+~@78VP`#hFgbg zG?`3@Mxz`6VzKxVB{AfpV(m)(_QW!7K24!#B!TNn23O@VNMzIK?d?U6)DE-R43$cS wYY%A%1cIMD9`7A_#BRT>L?Qv7&&S{SUnp5P#YQSqod5s;07*qoM6N<$f_olE%m4rY literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/table_row_delete.png b/src/main/webapp/editor/icon/table_row_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9c692350c8c9ce4307cb1ece50cc18456cb8f3 GIT binary patch literal 1495 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC#K_Rm+|b0>$@0 z&BDao&Dh!8$l2Tprq?sCxFj(zITdDaCeU7}UL(AEt(=Qe6HD@oLh|!-U@0IVBfliS zI3vG6!8zDeAv`lLCBM8F6gd#Tx}+9mmZhe+73JqDfJ4_R6N~MJ#)Nzg(VId}i0K0z zqYp|NNJ#}I1WbP*COqK-Iq(Yg& zqs@CGw7SGL`l_T|R@r^?yWzR$$vNUxE55KFJ~P|=y?Oq#vzzDb`CB}j<8RlOxV5HJ z*p^&8b%W)kl?bb9=igs{PaI{Qn{Z>+i>UJF(`0|}^Vt3_+LCwsjF^mHeeIE%s_7F2 z*0c&OOpCA0|L}yPCBRpkL&Mvz`Hiw(W9`9ax^hDLa<<9?}dLL^MeC_wjn)i$i$B8Y` zt$I@z&Jpq!Tou5R^LVyTYC>1;{mVUn&3`S_){9a*rW<{t-gd#f&ktTYo>_h9k?(B& zz@1D*u@=qch3{O1uHM`CAR)2ZIAjs$qX_YvX|I~jEaneCoAZrF&F)#l?C%%188_Y) zKW8wpeeGs>ojX-l?mwSu?fo}}JFCWccK4Mty}fJf|7!&NOK@Mzeo$ND@riwBe@rdE zIPFeHe)rO2@fLSx9k|mZJhSz6xZBsq1rs!kZOraJ)ZTk?&w9b5wSotqPh8CxoOn}u l{q1Qd_sOl9{a`%%Q~loCIG$PD1iU~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/table_row_insert_down.png b/src/main/webapp/editor/icon/table_row_insert_down.png new file mode 100644 index 0000000000000000000000000000000000000000..28c7177bd735123c32dfe8d4b8bf12697289f0b3 GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC#N5%;+`!n;$k$$t^6%c6 z)eGkLwy<^W7W*sUdN}0Du~Zi>E=Q>y2Ga!vJ$7v1x#Mzro9e?3slT09Hz`O>zT}%X zY0UzS616L7$6oIJU2gUL<(WO|dLsNW=gQCRes6u>_IphFgSScif>x$8t&(}RFi!b; zE2$|dK2j=5@cG%}`@DZoPAKNRICa{Sd3$fP+?ASX8+1r-Gpl`nUG<5nqTzuP-YlIa zdVc4n?b6GCDJ;DwsI-7#i`<(V0bf)5J*T?09*~=r`yw{YnWeW=tHYo%N_9ioM;}wU zrOyi=miStJPf3!~RoDJFe~x&l!psI~PV;lK@23m&AOBFI#H`MCB+R_GE}?W!`fP5Q z6?Zumuge@PJJ@UeVt$tM@sExss;iZ`4t;#{US^6>AnTEj%_qY&7Dh0BNYaw7srmO> zYsrL)Ig>uv%Kx)xT>s*5@|+h!DaGqjwr%^j`9^r?;Y%v-_E_<&iXO}NH)6an@5PgY z7d1{PacyeYGv7JxiG+T#g(=hW^dH)>*5U2Xs(E94AEsSCy=l+y%hMN6?bg2WtVNx< z^o8Hq3r_czU!T9JWYKSly)(}R-Po~l;*Zb$s#*K3^Az7iy<}`Y{B`%oH&s?Me!eem z{S<8xvRl^J{=Zw=K?$RU(F;o6UzonwX?EYi~^B c{Ksv;Fy%yf`x*cDPeCQDr>mdKI;Vst0JTae#{d8T literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/table_row_insert_up.png b/src/main/webapp/editor/icon/table_row_insert_up.png new file mode 100644 index 0000000000000000000000000000000000000000..586587d29fb618326147327d15c41b9315938ce9 GIT binary patch literal 1520 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC#M#Bn#o5@%$V)V%dG0|S$ir;B4q#jPd5z8<21BLC9v zE$Q5)Q6nLmtHQKd-tkPCnrfbrfl|kUR*5YfF|95xtlPL2`R3hnY1CBB%)i_(GBqtE zK)^+EtH8;cMYi`pTN;0VUh;0wv$HOOE%Gwwc0Moqx379#>EoA&B9%%sFG+8`79cgj zO*>gw<+X>%6qRqU!}q$In>RhoSTvbkT6^^ec?Pf9sm8JJ?zw4J{uNB^@GyHtJvdGH0U9V4C*iGi3vcTmB1xJl#zc=3u z&cDRk^oB{iTy5XsjSPpw-u}9JXMUfDND%wXFx7@_zf|P*&OUrk_F|Mx&1|>J(@a8#`Kfg`OrqaIs z*{&7M3p-7$W=%S}`K3alvRRW>Pr&w-O!uEn4-AfNTW`GcQT&Zv3spF}oU<=&bX~OZ z^WVwVwM$Q*ZIcW<)6HSm|L3*YzZ1K@JKZ+A8qOrGeZ-%Uje&nrN!I!4F%Ljxu&1k^ J%Q~loCIBn^FaiJo literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/table_row_merge.png b/src/main/webapp/editor/icon/table_row_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..89b51ffed37b103a989aec2ae545f5dcc0aea787 GIT binary patch literal 1426 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsdd8aNp` znVOk6nL1gz8W%Z8x|ul|JGmN}nVFcu%)qAC%+bKm%+k@!$ATTyQsQUuHx^LL&KV_;xB;_2cTQgLfZ@c!)JK#_m< z_y8*TJXO@AsAO`#iV!eQ{jfkFQ50bhH;A-+C=TYQmYW zWM)qpJyuoTx3Bk3J$llHW1rcxMAiCIp8t)@U*FGX-{_xZ_VaANct~WBD5s;&6poqS zn#%jRwFR7xDlr{nyZYu*z|!C6yKB$Cm%mzYOEGYz09V1~maS36OJe=Fj{KOtbNBTN zy&O9}`7~?{@HtrAlN#6jU~gIZfkp*JDU}-j8#gi!eU904EB8=g``taO%?mysOD%Cd z!nplF@CRG=sZLyWs^{)|FPtM^7I125wYzrderD(Mb9RL0Pi&U!KlIw4H)Z|tl?fUT zxPpwY9AfpVnc%JT&U#uU?;@MY+varqT*$nyl;?cuhQCjj_cF`PI`~}7=wx@m#Dlwo zPTk{K(Ry>Gp|ww1+`*5m-xr$9wb5>ClnmhBuD0&MhaJ5>zl6T^|GTBN`s(&tzI}3Y zBCg$fal+L|e*W6p-IqhH4n9BaeKDrxZ{?E{VRips=CEx%eD!>DG4~(g1crN#{}d|B R!;XVWNl#Zlmvv4FO#o6U4tW3o literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/textbox.png b/src/main/webapp/editor/icon/textbox.png new file mode 100644 index 0000000000000000000000000000000000000000..204de72316ac13eb8456bd8208f881939885d6d4 GIT binary patch literal 321 zcmV-H0lxl;P)4KV|@pIrODbY{Z;v_Aj;iCtd* zm+qN?Y5+dG>FBcmjjI#?Z@Dt{|Al9}{`c?B`XAn}`@em0*?$I*DTHuhm*@YDmnZz+ zcx}>u5a`*H`oDiq`hVMedEyd_PqpFyZCB>}M+TcNP5p14ElHdKmO0YjyLTo1Z{L*w z*4(}`0qg>x0pE!-0I0AfxJToE@2(WE%^(`Y2a5L)o#ugxJAn8T$k|Z310)Ur_h~;h TM?3Hj00000NkvXXu0mjfa9597 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/tree_blank.gif b/src/main/webapp/editor/icon/tree_blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7ae4067134ffb090de8adafdeaf575fe11a411d GIT binary patch literal 56 zcmZ?wbhEHb6k-r!XkcLY4+e@qSy)9F7#VaJfB+=Jz{KCvzw-23{>5{)-0I$ZZ;m*F FH30ie6G8w0 literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/tree_folder_closed.gif b/src/main/webapp/editor/icon/tree_folder_closed.gif new file mode 100644 index 0000000000000000000000000000000000000000..2999fa2527661a9fa4c8b85bf16580ec72592723 GIT binary patch literal 382 zcmZ?wbhEHb6k-r!SgOtNDTC>2k>Iydu^$ym-z#N*)oT5(Gyh+2`L9v$f0OzDX8Zpw zmj7EE|FxO@?{xg%ZTr8^^MAkV|9OZmM)AC&w zbG4RcOjh$X1>%+zxqZF7ghyH z8L3XG4k<}hRu^VDktrggQ>Vx>y8tx{2rXQ&P)Ll$g-L*K^=hs)Tmnokj6CezoZQ@O a?3~+p7+vHU4j(ysSl;{OsnhO`4AuZxb;wo# literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/tree_folder_open.gif b/src/main/webapp/editor/icon/tree_folder_open.gif new file mode 100644 index 0000000000000000000000000000000000000000..de75e8ec98319bc7fc45329dce9e8c17dc1b09b5 GIT binary patch literal 383 zcmZ?wbhEHb6k-r!SZd1fDTC>2k>Iydv7hCNKPr^ISIYjXQ2JG?^{-Lyf0O>dHnab2 zw*TAh|99K|@3H^i2I;i1Pn0%l^Nt@cYXA|0|0Btt$Gzs__4+^8c%g|F0?izqb7U z+Uoxss{e0p{J*vN|MvDjhi3dgI{(+%6@PCY{7(od{u6XAN=+=?=NtLPd-M9X|OBIy7WTfR}?Y1C%nV149%E4RK6Uzx IyCZ`&07Op29{>OV literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/tree_icon_close.gif b/src/main/webapp/editor/icon/tree_icon_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..56774de77f93ae558702e57e45a7858d23176277 GIT binary patch literal 1114 zcmZ?wbhEHb6krfwXkcV0EGhW^|G(mY?g-xi1((Eh+i z#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPs zx)kDt+yc0Ixnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3VE(+hb7s$)Ib-^? zsZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-M zDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($h+i z#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPs zx)kDt+yc0)um;B_?+|;}hnBEkGUMHM-K?xzZ0BEyIYEfocYKmJ?ey#%8!&aHN-C}{$JgD9j z+-|YNsaGH97=2K*B1JPy2$*(2On9ONa^T56H4m89i-3um@&CWSe}4b^`Q!VyuU|fY z`uO4fySHy%zk2!N`Lm}_9zS~c;Qqb4cW&RhdE@%Et5+^xx_IIIxwB_ZpE`Ns__3o$ z4j(#rVE?|odv@>Ixnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3VE(+hb7s$)Ib-^? zsZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-M zDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($sai%^UvUv=jy#P*beUInE0VX;N}dzT`PJx_Pjr^E;(ZQ T_sx|uGyWb}P!QqCz+epk9J4q? literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/tree_plus.gif b/src/main/webapp/editor/icon/tree_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..c7ba80e65340cd6331000622cd4d4daa7525006c GIT binary patch literal 129 zcmZ?wbhEHb6k?EIIK;wm^XARivX-s;4!?T;=|2)s{3qyKl$uzQnxasiS(2gP?&%xA zp!k!8k&A(uL5BedKn5@{8(QqT^UvUv=jy#Pm=5k{nE0VXz>=l=<%|`J%#svNA3nVy YbH|pg``o1Y*{5hq^`A&lWn{1h02i7!;{X5v literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/underline.png b/src/main/webapp/editor/icon/underline.png new file mode 100644 index 0000000000000000000000000000000000000000..90d0df2868871c6cf1bab25affe0d9f8b3f98eac GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$x?CIhdqH#X?$N2_%BY~9*Y!?2h z{rUe=9fy8l?U(-(m`sFEeV_iPeWNmK)A{6xz&-Zw?GGia|0}^&^gUfcv*1X`gnjmc zo{g-_np*x&^x*npDC+Wt-z8{4+sXs`@BiMP%+Rv-k;3)Ae_+S0!x%EHv-|4^N|MkDje{TP~{@MQ}vm3aX7|tvG V&AV6mZa&bt44$rjF6*2UngI1lb~69~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/unlink.png b/src/main/webapp/editor/icon/unlink.png new file mode 100644 index 0000000000000000000000000000000000000000..523575306d53eaf176b4f9b260f0d36852565596 GIT binary patch literal 657 zcmV;C0&e|@P)>>Oks2`oIPl8XEc) z7Z-oHdiCnNh=_=7-rnASQd3j^Pnt9-52PSJKmR|74-yB-uUN6-AxJ$)AIt?^O-)VT zCr_T74pjKb-rk;L@7}!}=gytu04X?h=n%)+wQD(m;%Y$oCm?ko^&ov<19WwDGt<-4 z-%p!1tt2QYXs4s2<1aTixBr2Gf&W1YfV4h{4-yB-gVcf4gYO zty=YV-MV%Er%#{$zp$_nY(Pat1(**K2g!rffz*TafelboQ)31?&%n#e>wZc~%9rfy z?C(JQGdw&z4x}IUyRt?v{0wJ6^R0W@A*Z8= z&I?WjSJx&^y7yBz?2M*SZ18QRLbAs(#0rsh%4F{kwbCf;j=k00000NkvXXu0mjf-HSTy literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/icon/usmiech.gif b/src/main/webapp/editor/icon/usmiech.gif new file mode 100644 index 0000000000000000000000000000000000000000..82a767d5ae7d9e05e6fdb49039ede354ab83b37a GIT binary patch literal 615 zcmZ?wbhEHb6k!lycoxS{T3Q+&9-fhr@%{VvU%!5NdwVZlytt#IefaPpC@3g6IM~3zz|qms($dn!#pT3_6PGSs zI&cYtz%y-QC@jl9JZ1U;pyu%dK0tK7amPUtd2oH1zlH-@d-Sn>KB7 zb#-06dUae}oT;g)jg5__re+qZ9b?%etO`EyfKQ%Xw8(xpp}A3q)$85tNDXl!hplaurJ@86j-XKviMQC?nt z!-frZc6L@)Ru&c(_V)IDeSL|EiLYP3R!~rIaBxUSNN8?u{_^FEtgNh`pWmN9fBygf z&p;QT_>+Z^fgz4T2V@&4P8isaG{iMEx3spkcXYP$FfnvBDFgzQI0|ru>vc+)bHvVH z5Nl)DDj6qYq8aNQ5-Y^29m{8{6{pdp<~Xm8ewF;O^J_#m*A-OMk; S^3#fCXJ=a!OL4IFu+SB7fQB(wh zKmdNfpU3O3FR9n6bx(yFW?LM)(cuM#(}134tA_DETWd7rfU%`9Ss=MUcwKe7(*}5qB2i- zk1uGwpM#!f*=R`>adwu?cYRS;jk(Tzc!pa5-%tD+u18O4qC2Xf>4JzmAXc#PD9cj> zmPQIePd8!CP=*zI1Hw)dY_GEEzXf-*VXTm&DS011zVX_L^0)8ccHG9=iU}(d*Wn(> z!>C3EN6l48Pm59_3;GNo&c|{B_6$7JdMw!sutt#xjAwwFlEOQphN~tCL#8&w#Kauq z3z~1q(fw40MoBC;o*w>)IdlG>aXKj16)Zb$Vxmd{%a;$BpP!F@3l^rJLA)0;b^@b% zC6jFgH7P@IDh(c{Wc;}p7GpbRXJ@0o#O4ASx*lhtE=7p%ZEDzbPcYM;iom24?jaS% ztCN_qjvKRw%nSZ4cwc%3@H#P8m4Z(7ZuByD?R}I8$5%ZT78bDi;tLcC#U8EX02~=eBHXF=lGptrCNRnI^up*XB(T$XgYMs^AIOw1Qr{*Wn)N-{9ma}x2(<~`9Go1=*>YR!KZvrBS zCd!u}@M0og%Ev@_;Z?Kk>Wwv=%h_57zmt2<_1msz_niYE=YRNPpd%02TK9oK1z z>ooPno}v^sikz_|1XHFx_L%~;ljh7i(jiay5F0x*+(9aXXFCl?AdQj5XlQ65%sEv+ ztfe?|YcjPN*@yYtE~ImQh{l|#A6Z8iu>pf43Rj52CzU_dMQm|S2xR62YjQOn+z8WH zaK=!}ggOZi{4pB7SQ=xC0n|vXP_Bkx_a)FeNd}w8U97BNbSWxa^QW-li9BZ#M1!_xE*?wzt^GcoeoL*JGLSe_+l-JT2#2tz!z&^ z_s5anq&^nBklIMwRvcoP3%qs%%Ea?1c{_*V*Xj&~uLu-2Dp1fUN4<0zMo$EH>*U83 zm_9;Vt%-bE{_J_!If!1y=c+`QVZ>0_BPy z+%^pgnv`f8H)Z%0&Tp8&u*MCIC4igNW5MeWM_DHpDNi)Zxz|9XboOnitwFq$ETN=X zj-tkCJnz**Y4k#6_Ty^B=hWo~L!47r`HoP=x&3T1)JLr2t2+#fHA9)b<7tX~vT z$e)FfZ+`X4_uKyq#wJHC;J3lH{lhQkUc~Wid;*pnjhM12xe-bPByd^xuQ9zgeM^Mm z*tc)|P}LtTnHXr@Gkmmbkg^O2bqyhO>LP|qjIwW2@Di+4EuKm~&tOO2!N3o{128Hl z9v%fgerM0C#)7P|PMvxr*!Gf?eGA8f{OT6fS`9l>LQCg)p=~c$Zr|AT_0+_?F*JJk zlapOT2Q(wWx-LMq(TxXxLn+U;!LV)MhNp~ommdh+fo8T*&g-yQbbG&ze&=>tC(Ar=&^1xlA;Jc(6 zcCi_xs8k}-S&#ONOHm%e@#nGC7F++8C~r29Or!_{(QGQEG)+O^J1BCPmgM4JAzC8I z`jS9bO>|}Jq_#$IRzp0d34>)&3L%7MN)eTv!0B!^nn}f4z2*vFE@jv3dn zG>H)u>FR7_d2JcsjvfZ$vkP~xik@T^(_N)nx=tqJV+tQjQ`owJ83bf`zX6Ear*=Mhzn5QUuXE|v zR33Qyi8G!0{H2r##d#6R6YmYbZz4NTssT;cXiGb6lxO+k@{ba@2D~*hKDY6N;Bkh> xhhCRLejsJkAIT{5sICHcfU`5>bKmUb{{y)0nR3PMMxX!y002ovPDHLkV1nl+t-}BS literal 0 HcmV?d00001 diff --git a/src/main/webapp/editor/lang/en.txt b/src/main/webapp/editor/lang/en.txt new file mode 100644 index 00000000..6d88b2c1 --- /dev/null +++ b/src/main/webapp/editor/lang/en.txt @@ -0,0 +1,163 @@ +//WebNoteLanguageSet +{ + "source": "Html Source View", + "design": "Design View", + "font": "Font", + "fontsize": "Font Size", + "lineheight": "Line Height", + "bold": "Bold", + "italic": "Italic", + "underline": "Underline", + "strikethrough": "Strike Through", + "superscript": "Super Script", + "subscript": "Sub Script", + "forecolor": "Font Color", + "backcolor": "Font Back Color", + "justifyleft": "Justify Left", + "justifycenter": "Justify Center", + "justifyright": "Justify Right", + "indent": "Indent", + "outdent": "Outdent", + "insertunorderedlist": "Unordered List", + "insertorderedlist": "Ordered List", + "insertfirstparagraph": "Insert First Paragraph", + "insertlastparagraph": "Insert Last Paragraph", + "createlink": "Create Hyper Link", + "unlink": "Remove Hyper Link", + "hr": "Horizontal Line", + "image_link": "Insert WebLink Image", + "image_upload": "Upload Image", + "images": "Image Center(Server Storage)", + "imagecenter": "Image Center", + "image_search": "Insert Web Search Image", + "pageadd": "Add Html Source", + "textbox": "Text Box", + "note": "Note Box", + "table": "Table", + "sourcebox": "Source Box", + "emoticon": "Emoticon", + "special_chars": "Special Character", + "increase": "Increase Height(+100px)", + "decrease": "Decrease Height(-100px)", + "fullscreen": "Full Screen", + "normalscreen": "Normal Screen", + "whats": "About WebNote", + + "btn_apply": "Apply", + "btn_ok": "Ok", + "btn_insert": "Insert", + "btn_close": "Close", + "btn_mkdir": "Make Folder", + "btn_rmdir": "Delete Folder", + "btn_image_upload": "Upload Image", + "btn_select_all": "Select All", + "btn_select_insert": "Insert", + "btn_select_delete": "Delete", + + "label_auto": "Auto", + "msg_click": "Click!", + "msg_inc_unit": "Inc Unit", + "msg_left": "Left", + "msg_right": "Right", + "msg_center": "Center", + "msg_top": "Top", + "msg_bottom": "Bottom", + "msg_color": "Color", + "msg_rows": "Row", + "msg_cols": "Col", + "msg_align": "Align", + "msg_context_popup": "Menu", + "msg_file_attach_thumb": "Double Click:Insert To Contents, Right Click:View Menu", + "msg_no_subfolder": "No Sub-Folder", + "msg_get_filelist": "Get File List", + "msg_get_subfolderlist": "Get Sub-Folder List", + "msg_refresh_wic_tree": "Refresh All Tree", + + "font_input_form_text": "Input Font Name", + "fontsize_input_form_text": "Input Font Size Value(include unit)", + "lineheight_input_form_text": "Input Line Height Value(include unit)", + "fontcolor_form_title": "Input Color Code", + + "createlink_alert": "Select Contents(Drag)", + "createlink_target_menu": "Target", + "createlink_target_form_title": "Select Link Target", + "createlink_url_menu": "URL", + "createlink_url_form_title": "Input Link URL", + + "insertimagelink_url_menu": "Image Url", + "insertimagelink_url_form_title": "Input Image Url", + "insertimagelink_width_menu": "Width", + "insertimagelink_height_menu": "Height", + "insertimagelink_alt_menu": "Alt", + "insertimagelink_alt_form_title": "Image Alt Text", + "insertimagelink_title_menu": "Title", + "insertimagelink_title_form_title": "Image Title Text", + "insertimagelink_hyperlink_menu": "HyperLink", + + "insertimageupload_file_menu": "File", + "insertimageupload_btn_upload": "Upload", + + "image_context_property": "Property", + + "textbox_borderstyle_menu": "Border", + "textbox_borderstyle_form_solid": "Solid", + "textbox_borderstyle_form_dotted": "Dotted", + "textbox_borderstyle_form_dashed": "Dashed", + "textbox_borderstyle_form_none": "None", + "textbox_borderwidth_menu": "Border", + "textbox_bordercolor_menu": "Border", + "textbox_bgcolor_menu": "Background", + "textbox_textcolor_menu": "Text", + "textbox_width_menu": "Width", + "textbox_textalign_menu": "TextAlign", + "textbox_padding_menu": "Padding", + "textbox_margin_menu": "Margin", + "textbox_preview_text": "Preview Text", + + "table_cellpadding": "Cell Padding", + "table_cellspacing": "Cell Spacing", + "table_border": "Border", + "table_bgcolor": "Table BG", + "table_cell_bgcolor": "Cell BG", + + "table_context_table_propery": "Table Property", + "table_context_cell_propery": "Cell Property", + "table_context_insert_row_above": "Insert Above", + "table_context_insert_row_below": "Insert Below", + "table_context_insert_col_left": "Insert Left", + "table_context_insert_col_right": "Insert Right", + "table_context_delete_row_this": "Delete Row", + "table_context_delete_col_this": "Delete Col", + "table_context_merge_cell_right": "Merge Right", + "table_context_merge_cell_below": "Merge Below", + "table_context_cancel_merge": "Cancel Merge", + + "file_attach_thumb_context_insert": "Insert To Contents", + "file_attach_thumb_context_delete": "Delete From Server", + + "alert_only_design_mode": "Use Design View!", + "alert_delete_image_s_c": "Delete Select Images From Server", + "alert_delete_image_s_c_force": "Have failed to delete the server files, the server does not have the file. Are you sure you want to delete the inserted image information in the editor?", + "alert_no_resize_editor": "Do Not Resizing In Full Screen", + "alert_no_command": "Command Not Found", + "alert_input_url": "Please Input Url", + "alert_timeout": "Time Out! Please Retry!", + + "alert_tbl_norightcell": "There is no cell right", + "alert_tbl_nobelowcell": "There is no cell below", + "alert_tbl_sametypecell": "Only the cells of the same type can be", + + "alert_no_dragndrop": "your browser is not supply drag & drop upload", + + "alert_select_image": "Select Image", + "alert_input_foldername": "Input Folder Name", + "alert_no_special_characters": "Special characters can not be used", + "alert_no_image": "No Images!", + + "confirm_del_path": "Delete Folder Path", + "confirm_del_alert": "The folder's sub-folders, all files are deleted. Are you sure you want to delete?", + "confirm_select_del": "Are you sure you want to delete the selected image to the server?" + + + +} \ No newline at end of file diff --git a/src/main/webapp/editor/lang/ko.txt b/src/main/webapp/editor/lang/ko.txt new file mode 100644 index 00000000..7ae4789c --- /dev/null +++ b/src/main/webapp/editor/lang/ko.txt @@ -0,0 +1,164 @@ +//WebNoteLanguageSet +{ + "source": "HTML소스보기", + "design": "디자인보기", + "font": "글자모양", + "fontsize": "글자크기", + "lineheight": "줄간격", + "bold": "진하게", + "italic": "이탤릭", + "underline": "밑줄", + "strikethrough": "취소선", + "superscript": "윗첨자", + "subscript": "아랫첨자", + "forecolor": "글자색", + "backcolor": "글자배경색", + "justifyleft": "왼쪽정렬", + "justifycenter": "가운데정렬", + "justifyright": "오른쪽정렬", + "indent": "들여쓰기", + "outdent": "내어쓰기", + "insertunorderedlist": "기본리스트", + "insertorderedlist": "숫자리스트", + "insertfirstparagraph": "문서 시작지점에 빈문단삽입", + "insertlastparagraph": "문서 끝지점에 빈문단삽입", + "createlink": "하이퍼링크설정", + "unlink": "하이퍼링크제거", + "hr": "수평선삽입", + "image_link": "이미지 링크 삽입", + "image_upload": "이미지 업로드 삽입", + "images": "이미지센터(서버저장소)", + "imagecenter": "이미지센터", + "image_search": "웹에서 이미지 검색/삽입", + "pageadd": "HTML소스로 삽입", + "textbox": "글상자", + "note": "노트상자", + "table": "표", + "sourcebox": "소스노트", + "emoticon": "이모티콘", + "special_chars": "특수문자", + "increase": "에디터높이증가(+100px)", + "decrease": "에디터높이감소(-100px)", + "fullscreen": "전체화면", + "normalscreen": "기본화면", + "whats": "웹노트", + + "btn_apply": "적용", + "btn_ok": "확인", + "btn_insert": "삽입하기", + "btn_close": "닫기", + "btn_mkdir": "새폴더 생성", + "btn_rmdir": "폴더 삭제", + "btn_image_upload": "이미지 업로드", + "btn_select_all": "전체선택", + "btn_select_insert": "선택삽입", + "btn_select_delete": "선택삭제", + + "label_auto": "자동", + "msg_click": "클릭하세요!", + "msg_inc_unit": "단위포함", + "msg_left": "왼쪽", + "msg_right": "오른쪽", + "msg_center": "가운데", + "msg_top": "위", + "msg_bottom": "아래", + "msg_color": "색상", + "msg_rows": "행", + "msg_cols": "열", + "msg_align": "정렬", + "msg_context_popup": "설정", + "msg_file_attach_thumb": "더블클릭:본문삽입, 우클릭:메뉴보기", + "msg_no_subfolder": "하위폴더가 없습니다.", + "msg_get_filelist": "파일목록 가져오기", + "msg_get_subfolderlist": "하위폴더 가져오기", + "msg_refresh_wic_tree": "트리 전체 새로고침", + + "font_input_form_text": "직접 폰트명을 입력할 수 있습니다.", + "fontsize_input_form_text": "직접 크기 값을 입력할 수 있습니다(단위포함)", + "lineheight_input_form_text": "직접 줄간격 값을 입력할 수 있습니다(단위포함)", + "fontcolor_form_title": "색상코드를 입력해주세요", + + "createlink_alert": "링크를 만들 대상을 먼저 드래그해서 선택해주세요", + "createlink_target_menu": "링크대상", + "createlink_target_form_title": "링크가 열릴 창 대상을 선택합니다.", + "createlink_url_menu": "링크주소", + "createlink_url_form_title": "링크 주소를 입력합니다.", + + "insertimagelink_url_menu": "웹주소", + "insertimagelink_url_form_title": "이미지 웹주소를 입력합니다.", + "insertimagelink_width_menu": "가로길이", + "insertimagelink_height_menu": "세로길이", + "insertimagelink_alt_menu": "안내(Alt)", + "insertimagelink_alt_form_title": "이미지를 출력할 수 없을때 대체해서 보여줄 내용", + "insertimagelink_title_menu": "안내(Title)", + "insertimagelink_title_form_title": "이미지위에 마우스를 올렸을때 보여줄 내용", + "insertimagelink_hyperlink_menu": "하이퍼링크", + + "insertimageupload_file_menu": "파일", + "insertimageupload_btn_upload": "올리기", + + "image_context_property": "이미지속성", + + "textbox_borderstyle_menu": "선 모양", + "textbox_borderstyle_form_solid": "실선", + "textbox_borderstyle_form_dotted": "가는점선", + "textbox_borderstyle_form_dashed": "굵은점선", + "textbox_borderstyle_form_none": "선 없음", + "textbox_borderwidth_menu": "선 두께", + "textbox_bordercolor_menu": "선 색상", + "textbox_bgcolor_menu": "배경색", + "textbox_textcolor_menu": "글자색", + "textbox_width_menu": "가로길이", + "textbox_textalign_menu": "글자정렬", + "textbox_padding_menu": "안쪽여백", + "textbox_margin_menu": "바깥여백", + "textbox_preview_text": "미리보기 내용", + + "table_cellpadding": "셀 안쪽여백", + "table_cellspacing": "셀 간격", + "table_border": "선 두께", + "table_bgcolor": "표 배경색", + "table_cell_bgcolor": "셀 배경색", + + "table_context_table_propery": "표속성", + "table_context_cell_propery": "셀속성", + "table_context_insert_row_above": "위에 행삽입", + "table_context_insert_row_below": "아래 행삽입", + "table_context_insert_col_left": "왼쪽에 열삽입", + "table_context_insert_col_right": "오른쪽에 열삽입", + "table_context_delete_row_this": "현재행 삭제", + "table_context_delete_col_this": "현재열 삭제", + "table_context_merge_cell_right": "오른쪽 셀과 병합", + "table_context_merge_cell_below": "아래쪽 셀과 병합", + "table_context_cancel_merge": "셀병합 취소", + + "file_attach_thumb_context_insert": "본문에 삽입", + "file_attach_thumb_context_delete": "서버에서 파일 삭제", + + "alert_only_design_mode": "디자인보기에서 사용해 주세요", + "alert_delete_image_s_c": "서버에서 해당 이미지를 삭제하고, 본문에서도 모두 제거하시겠습니까?", + "alert_delete_image_s_c_force": "서버파일 삭제에 실패했거나, 서버에 해당 파일이 없습니다. 에디터에 삽입된 이미지정보를 삭제 하시겠습니까?", + "alert_no_resize_editor": "전체화면 모드에서는 사이즈를 조절할 수 없습니다.", + "alert_no_command": "없는 기능입니다.", + "alert_input_url": "URL을 입력해 주세요", + "alert_timeout": "대기 시간이 길어져 중단 합니다. 잠시 후 다시 시도해 주세요", + + "alert_tbl_norightcell": "우측에 셀이 없습니다.", + "alert_tbl_nobelowcell": "아래에 셀이 없습니다.", + "alert_tbl_sametypecell": "동일한 유형의 셀만 가능합니다.", + + "alert_no_dragndrop": "드래그&드롭을 통한 업로드를 지원하지 않는 브라우저 입니다.", + + "alert_select_image": "이미지를 선택해 주세요", + "alert_input_foldername": "폴더명을 입력해주세요.", + "alert_no_special_characters": "특수문자는 폴더이름에 사용할 수 없습니다.", + "alert_no_image": "이미지가 없습니다!", + + "confirm_del_path": "삭제폴더경로", + "confirm_del_alert": "해당 폴더의 하위의 폴더, 파일들이 모두 함께 삭제됩니다. 정말 삭제하시겠습니까?", + "confirm_select_del": "선택된 이미지를 서버에서 삭제하시겠습니까?" + + + + +} \ No newline at end of file diff --git a/src/main/webapp/img/seed/favicon.ico b/src/main/webapp/img/seed/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5bbcf72587b7c32d4bc55c6404c9df9f71da8ece GIT binary patch literal 99678 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/js/seed/commonFileUtil.js b/src/main/webapp/js/seed/commonFileUtil.js new file mode 100644 index 00000000..c27589fa --- /dev/null +++ b/src/main/webapp/js/seed/commonFileUtil.js @@ -0,0 +1,186 @@ + +/*$("#upFile").click(function(){ + var url = $(this).attr("href"); + window.open(url,"popFileUpload","width=430, height=630, menubar=no, status=no, resizable=no"); + return false; +});*/ +function fileTempUp(upFile, fileGubun){ + var i = upFile.id.split('_')[1]; + if($(upFile).val() == ""){ + alert("파일을 선택해 주세요"); + $(upFile).focus(); + return false; + } + var val = $(upFile).val().split("\\"); + var fileName = val[val.length-1]; //마지막 화일명 + var fileType = fileName.substring(fileName.lastIndexOf("."));//확장자빼오기 + + var extArray = new Array("txt","jpeg","jpg","png","gif","bmp","mp3","mp4","hwp","doc","docx","xls","xlsx","ppt","pptx","pdf","zip","alz"); + + var extChk = false; + + for(var f=0; f  잠시만 기다려주세요.' }); + + $('#fileTempUpFrm'+i).ajaxForm({ + //보내기전 validation check가 필요할경우 + beforeSubmit: function (data, form, option) { + //alert("전송전!!"); + //return false; + }, + //submit이후의 처리 + success: function(response, status){ + $.unblockUI(); + jf_upload_set(response.fileName, response.reFileName, response.fileSize, response.fileType, response.copyContractYn, i, fileGubun); + //alert("after"); + }, + //ajax error + error: function(){ + $.unblockUI(); + alert("작업이 실패 했습니다."); + } + }).submit(); + +} + +var fileCountFix = 0; +var totFileSize = 0; +function jf_upload_set(fileName, reFileName, fileSize, fileType, copyContractYn, objNo, fileGubun){ + /*alert("fileName:" + fileName); + alert("reFileName:" + reFileName); + alert("fileSize:" + fileSize); + alert("fileType:" + fileType); + alert("copyContractYn:" + copyContractYn);*/ + var sizeData = parseInt(fileSize); + sizeData = sizeData/1024/1024; + totFileSize = sizeData; + sizeData = sizeData.toFixed(2); + + if(totFileSize > 100){ + alert("첨부파일 크기가 100Mbyte를 넘었습니다."); + return; + } + + var upFileLiLength = parseInt($("#uploadFileCntId").val()); + + if(upFileLiLength != "" && upFileLiLength != undefined){ + if(fileCountFix==0){ + fileCountFix = upFileLiLength+1; + } + } + + + //홈페이지에서 등록하는 파일은 메모 박스가 없게... + var isFileMemo = true; + if(reFileName != null && reFileName !="" && reFileName != undefined){ + var arrReName = reFileName.split("_"); + if(arrReName.length > 0){ + if(arrReName[0] == 'mediation'){ + isFileMemo = false; + } + } + } + + var fileHtml = ""; + + fileCountFix = fileCountFix+1; + $("#upFileHtml"+objNo).append(fileHtml); +} + +function jf_delete_file(deleteNum, sizeData, copyContractYn, objNo){ + + var idName = ""; + + idName = "upFileHtml"+objNo; + + var fileIdx = $("#"+idName+" > #fileUploadP"+deleteNum).children(".fileIdxClass").val(); + + if(fileIdx != ""){ + var deleteFileData = $("#deleteFileDataId").val(); + if(deleteFileData != ""){ + deleteFileData = deleteFileData+","+fileIdx; + }else{ + deleteFileData = fileIdx; + } + + $("#deleteFileDataId").val(deleteFileData); + + } + + $("#"+idName+" > #fileUploadP"+deleteNum).remove(); + + totFileSize = totFileSize-sizeData; + + if(totFileSize < 0){ + totFileSize = 0; + } +} + +function jf_delete_file2(deleteNum, sizeData, copyContractYn, objNo, fileSeqNo){ + + var idName = ""; + + idName = "upFileHtml"+objNo; + + var fileIdx = $("#"+idName+" > #fileUploadP"+deleteNum).children(".fileIdxClass").val(); + + if(fileIdx != ""){ + var deleteFileData = $("#deleteFileDataId").val(); + if(deleteFileData != ""){ + deleteFileData = deleteFileData+","+fileIdx; + }else{ + deleteFileData = fileIdx; + } + + $("#deleteFileDataId").val(deleteFileData); + + } + + $("#"+idName+" > #fileUploadP"+deleteNum).remove(); + + totFileSize = totFileSize-sizeData; + + if(totFileSize < 0){ + totFileSize = 0; + } + + fileDelt(fileSeqNo); +} + +//기존 등록된 파일삭제 +function fileDelt(fileSeqNo){ + $("#fileSeqNo").val(fileSeqNo); + var url = ""; + $("#type").val("U"); + var param = jQuery('#frm').serialize(); + url = "/user/case/trublcfrncmng/ajax/CasefileDel.do"; + XHR(url, param, function(r){ + alert("파일이 삭제되었습니다."); + }); +} + diff --git a/src/main/webapp/js/seed/jquery.form.js b/src/main/webapp/js/seed/jquery.form.js new file mode 100644 index 00000000..e3126caf --- /dev/null +++ b/src/main/webapp/js/seed/jquery.form.js @@ -0,0 +1,1190 @@ +/*! + * jQuery Form Plugin + * version: 3.35.0-2013.05.23 + * @requires jQuery v1.5 or later + * Copyright (c) 2013 M. Alsup + * Examples and documentation at: http://malsup.com/jquery/form/ + * Project repository: https://github.com/malsup/form + * Dual licensed under the MIT and GPL licenses. + * https://github.com/malsup/form#copyright-and-license + */ +/*global ActiveXObject */ +;(function($) { +"use strict"; + +/* + Usage Note: + ----------- + Do not use both ajaxSubmit and ajaxForm on the same form. These + functions are mutually exclusive. Use ajaxSubmit if you want + to bind your own submit handler to the form. For example, + + $(document).ready(function() { + $('#myForm').on('submit', function(e) { + e.preventDefault(); // <-- important + $(this).ajaxSubmit({ + target: '#output' + }); + }); + }); + + Use ajaxForm when you want the plugin to manage all the event binding + for you. For example, + + $(document).ready(function() { + $('#myForm').ajaxForm({ + target: '#output' + }); + }); + + You can also use ajaxForm with delegation (requires jQuery v1.7+), so the + form does not have to exist when you invoke ajaxForm: + + $('#myForm').ajaxForm({ + delegation: true, + target: '#output' + }); + + When using ajaxForm, the ajaxSubmit function will be invoked for you + at the appropriate time. +*/ + +/** + * Feature detection + */ +var feature = {}; +feature.fileapi = $("").get(0).files !== undefined; +feature.formdata = window.FormData !== undefined; + +var hasProp = !!$.fn.prop; + +// attr2 uses prop when it can but checks the return type for +// an expected string. this accounts for the case where a form +// contains inputs with names like "action" or "method"; in those +// cases "prop" returns the element +$.fn.attr2 = function() { + if ( ! hasProp ) + return this.attr.apply(this, arguments); + var val = this.prop.apply(this, arguments); + if ( ( val && val.jquery ) || typeof val === 'string' ) + return val; + return this.attr.apply(this, arguments); +}; + +/** + * ajaxSubmit() provides a mechanism for immediately submitting + * an HTML form using AJAX. + */ +$.fn.ajaxSubmit = function(options) { + /*jshint scripturl:true */ + + // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) + if (!this.length) { + log('ajaxSubmit: skipping submit process - no element selected'); + return this; + } + + var method, action, url, $form = this; + + if (typeof options == 'function') { + options = { success: options }; + } + + method = options.type || this.attr2('method'); + action = options.url || this.attr2('action'); + + url = (typeof action === 'string') ? $.trim(action) : ''; + url = url || window.location.href || ''; + if (url) { + // clean url (don't include hash vaue) + url = (url.match(/^([^#]+)/)||[])[1]; + } + + options = $.extend(true, { + url: url, + success: $.ajaxSettings.success, + type: method || 'GET', + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + }, options); + + // hook for manipulating the form data before it is extracted; + // convenient for use with rich editors like tinyMCE or FCKEditor + var veto = {}; + this.trigger('form-pre-serialize', [this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); + return this; + } + + // provide opportunity to alter form data before it is serialized + if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSerialize callback'); + return this; + } + + var traditional = options.traditional; + if ( traditional === undefined ) { + traditional = $.ajaxSettings.traditional; + } + + var elements = []; + var qx, a = this.formToArray(options.semantic, elements); + if (options.data) { + options.extraData = options.data; + qx = $.param(options.data, traditional); + } + + // give pre-submit callback an opportunity to abort the submit + if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSubmit callback'); + return this; + } + + // fire vetoable 'validate' event + this.trigger('form-submit-validate', [a, this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); + return this; + } + + var q = $.param(a, traditional); + if (qx) { + q = ( q ? (q + '&' + qx) : qx ); + } + if (options.type.toUpperCase() == 'GET') { + options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; + options.data = null; // data is null for 'get' + } + else { + options.data = q; // data is the query string for 'post' + } + + var callbacks = []; + if (options.resetForm) { + callbacks.push(function() { $form.resetForm(); }); + } + if (options.clearForm) { + callbacks.push(function() { $form.clearForm(options.includeHidden); }); + } + + // perform a load on the target only if dataType is not provided + if (!options.dataType && options.target) { + var oldSuccess = options.success || function(){}; + callbacks.push(function(data) { + var fn = options.replaceTarget ? 'replaceWith' : 'html'; + $(options.target)[fn](data).each(oldSuccess, arguments); + }); + } + else if (options.success) { + callbacks.push(options.success); + } + + options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg + var context = options.context || this ; // jQuery 1.4+ supports scope context + for (var i=0, max=callbacks.length; i < max; i++) { + callbacks[i].apply(context, [data, status, xhr || $form, $form]); + } + }; + + if (options.error) { + var oldError = options.error; + options.error = function(xhr, status, error) { + var context = options.context || this; + oldError.apply(context, [xhr, status, error, $form]); + }; + } + + if (options.complete) { + var oldComplete = options.complete; + options.complete = function(xhr, status) { + var context = options.context || this; + oldComplete.apply(context, [xhr, status, $form]); + }; + } + + // are there files to upload? + + // [value] (issue #113), also see comment: + // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 + var fileInputs = $('input[type=file]:enabled[value!=""]', this); + + var hasFileInputs = fileInputs.length > 0; + var mp = 'multipart/form-data'; + var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); + + var fileAPI = feature.fileapi && feature.formdata; + log("fileAPI :" + fileAPI); + var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; + + var jqxhr; + + // options.iframe allows user to force iframe mode + // 06-NOV-09: now defaulting to iframe mode if file input is detected + if (options.iframe !== false && (options.iframe || shouldUseFrame)) { + // hack to fix Safari hang (thanks to Tim Molendijk for this) + // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d + if (options.closeKeepAlive) { + $.get(options.closeKeepAlive, function() { + jqxhr = fileUploadIframe(a); + }); + } + else { + jqxhr = fileUploadIframe(a); + } + } + else if ((hasFileInputs || multipart) && fileAPI) { + jqxhr = fileUploadXhr(a); + } + else { + jqxhr = $.ajax(options); + } + + $form.removeData('jqxhr').data('jqxhr', jqxhr); + + // clear element array + for (var k=0; k < elements.length; k++) + elements[k] = null; + + // fire 'notify' event + this.trigger('form-submit-notify', [this, options]); + return this; + + // utility fn for deep serialization + function deepSerialize(extraData){ + var serialized = $.param(extraData, options.traditional).split('&'); + var len = serialized.length; + var result = []; + var i, part; + for (i=0; i < len; i++) { + // #252; undo param space replacement + serialized[i] = serialized[i].replace(/\+/g,' '); + part = serialized[i].split('='); + // #278; use array instead of object storage, favoring array serializations + result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); + } + return result; + } + + // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) + function fileUploadXhr(a) { + var formdata = new FormData(); + + for (var i=0; i < a.length; i++) { + formdata.append(a[i].name, a[i].value); + } + + if (options.extraData) { + var serializedData = deepSerialize(options.extraData); + for (i=0; i < serializedData.length; i++) + if (serializedData[i]) + formdata.append(serializedData[i][0], serializedData[i][1]); + } + + options.data = null; + + var s = $.extend(true, {}, $.ajaxSettings, options, { + contentType: false, + processData: false, + cache: false, + type: method || 'POST' + }); + + if (options.uploadProgress) { + // workaround because jqXHR does not expose upload property + s.xhr = function() { + var xhr = jQuery.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.addEventListener('progress', function(event) { + var percent = 0; + var position = event.loaded || event.position; /*event.position is deprecated*/ + var total = event.total; + if (event.lengthComputable) { + percent = Math.ceil(position / total * 100); + } + options.uploadProgress(event, position, total, percent); + }, false); + } + return xhr; + }; + } + + s.data = null; + var beforeSend = s.beforeSend; + s.beforeSend = function(xhr, o) { + o.data = formdata; + if(beforeSend) + beforeSend.call(this, xhr, o); + }; + return $.ajax(s); + } + + // private function for handling file uploads (hat tip to YAHOO!) + function fileUploadIframe(a) { + var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; + var deferred = $.Deferred(); + + if (a) { + // ensure that every serialized input is still enabled + for (i=0; i < elements.length; i++) { + el = $(elements[i]); + if ( hasProp ) + el.prop('disabled', false); + else + el.removeAttr('disabled'); + } + } + + s = $.extend(true, {}, $.ajaxSettings, options); + s.context = s.context || s; + id = 'jqFormIO' + (new Date().getTime()); + if (s.iframeTarget) { + $io = $(s.iframeTarget); + n = $io.attr2('name'); + if (!n) + $io.attr2('name', id); + else + id = n; + } + else { + $io = $('
"; + fileHtml += "\"gif\"  "; + fileHtml += fileName+"  ("+sizeData+")"; + fileHtml += " "; + fileHtml += "\"삭제\""; + if(isFileMemo){ + fileHtml += ""; + } + fileHtml += ""; + fileHtml += ""; + fileHtml += ""; + fileHtml += ""; + fileHtml += ""; + fileHtml += "